Skip to main content

License: GPL v3 Build Status PyPI

what-vpn

Identifies servers running various SSL VPNs. (They should really be called "TLS-based" VPNs, but "SSL VPN" has become the de facto standard jargon.) Currently it can recognize…

  • Cisco AnyConnect and OpenConnect (ocserv)
  • Juniper Network Connect/Pulse
  • PAN GlobalProtect
  • Barracuda Networks
  • Check Point
  • Microsoft SSTP
  • OpenVPN
  • Fortinet
  • Array Networks
  • F5 BigIP
  • SonicWall NX (spin-off from Dell)
  • Aruba VIA
  • H3C

Install

Requires Python 3, pip, and requests:

$ pip3 install https://github.com/dlenski/what-vpn/archive/master.zip
...
$ what-vpn
usage: what-vpn [-h] [-k] [-t SEC] [-v | -c] server [server ...]
what-vpn: error: the following arguments are required: server

Examples

$ what-vpn vpn.colorado.edu vpn.northeastern.edu \
    vpn.tnstate.edu vpn.smith.edu vpn.caltech.edu \
    vpn.yale.edu vpn.drew.edu vpn.uca.edu vpn.simmons.edu \
    vpn.nl.edu cpvpn.its.hawaii.edu ssl-vpn.***.com \
    viavpn.luther.edu
vpn.colorado.edu: AnyConnect/OpenConnect (Cisco)
vpn.northeastern.edu: PAN GlobalProtect (portal)
vpn.tnstate.edu: PAN GlobalProtect (portal+gateway)
vpn.smith.edu: Juniper Network Connect
vpn.caltech.edu: AnyConnect/OpenConnect (Cisco, ASA (9.1(6)6))
vpn.yale.edu: AnyConnect/OpenConnect (Cisco, ASA (8.4(5)))
vpn.uca.edu: Barracuda (2017)
vpn.simmons.edu: Check Point (2015, 20%)
vpn.nl.edu: Check Point
cpvpn.its.hawaii.edu: Check Point
vpn.***.com: Array Networks (40%)
ssl-vpn.***.com: no match
viavpn.luther.edu Aruba VIA (80%)

$ what-vpn -kv vpn.***.com

Sniffing ***.***.com ...
  Is it AnyConnect/OpenConnect? ocserv, 0.8.0-0.11.6
  Is it Juniper Network Connect? no match
  Is it PAN GlobalProtect? no match
  Is it Barracuda? no match
  Is it Check Point? no match
  Is it SSTP? no match
  Is it OpenVPN? no match
  => AnyConnect/OpenConnect (ocserv, 0.8.0-0.11.6)

Interesting results

An interesting question for the open source community, including the indispensable OpenConnect (which I also contribute to) is…

What are the most commonly-used SSL VPN protocols in the real world?

2019 results

In April 2019, I took a list of major universities and companies in the USA, and generated some guesses for the hostnames of their VPN endpoints (e.g. {vpn,ssl-vpn,sslvpn}.*.{edu,com}). I then used what-vpn to probe them all and looked at the subset of the results that matched to an identifiable SSL VPN protocol:

  1  Check Point
  1  Citrix (manually inspected, don't know how to reliably autodetect)
  1  OpenVPN
  5  Dell or SonicWall (manually inspected, didn't know how to reliably autodetect at the time
  7  Fortinet
  7  Barracuda
  8  F5 (manually inspected, didn't know how to reliably autodetect at this time)
 14  SSTP
 53  PAN GlobalProtect (portal and/or gateway)
 72  Juniper Network Connect (or Junos/Pulse, hard to distinguish)
243  Cisco AnyConnect (including 1 ocserv)

Assuming these results are roughly representative of “SSL VPN” deployments in general (at least in the USA), they show that OpenConnect already supports the top 3 most commonly-encountered SSL VPN protocols, or about 80% of SSL VPNs. Additionally Microsoft SSTP is supported by the open-source sstp-client, and of course OpenVPN is well-supported by open-source clients as well.

(Excerpted from this post on the OpenConnect mailing list)

2021 results

I repeated this analysis in February 2021 (after having implemented F5, SonicWall NX, and Array Networks sniffers, and having improved several others). This time, I expanded the pool of names to include {vpn,ssl-vpn,sslvpn,remote,vpn2,new.vpn,access}.*.{edu,com}. Here are the 2021 results for servers that matched to an identifiable SSL VPN protocol:

  1  Array Networks
  4  Barracuda
  4  Check Point
  6  SonicWall NX
  8  OpenVPN
 14  SSTP
 21  F5 BigIP
 29  Fortinet
 83  Pulse Secure (most also support the older Juniper protocol)
103  PAN GlobalProtect (includes 7 servers that behave in a slightly odd way)
298  Cisco AnyConnect (no ocserv found this time)

We've recently added support in OpenConnect for Fortinet and F5 BigIP (with support for SonicWall NX coming soon). Combined with AnyConnect, GlobalProtect, and Pulse/Juniper, this means that OpenConnect now supports 5 of the most highly-used SSL VPN protocols.

Assuming again that these results are roughly representative of “SSL VPN” deployments in general (at least in the USA). That means that OpenConnect now supports almost 93% of SSL VPNs in real-world use.

TODO

  • Identify non-SSL/TLS-based VPNs? (e.g. IPSEC, à la ike-scan)
  • Identify more SSL VPNs: Citrix… any others?
    • Fix apparent false-negatives for some SonicWall/Dell servers
  • Identify specific versions or flavors of VPN servers?
  • Better confidence levels?

License

GPLv3 or later

Metadata

Release files for what-vpn 0.7

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Source distribution (sdist)

Source distribution for what-vpn 0.7
File Size Uploaded Provenance Actions
what-vpn-0.7.tar.gz 13.2 kB Without provenance Details for what-vpn-0.7.tar.gz

Built distribution (wheel)

Table of built distributions (wheels) for what-vpn 0.7
File Interpreter ABI Platform Actions
what_vpn-0.7-py3-none-any.whl Python 3 none any Details for what_vpn-0.7-py3-none-any.whl

Total release size: 24.8 kB

Release files / what-vpn-0.7.tar.gz

Download URL what-vpn-0.7.tar.gz
Size 13.2 kB
Tags Source
SHA-256 checksum
How to use checksums
84ee86a71f08f973b77125acde13f50b485c8dc207773dbf2e9af7896866f40c
BLAKE2b-256 checksum
How to use checksums
55bcc255e0dfd2c6a8b23d3e6ccb81ecac8061379e36c11360317106de85f2b5
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/4.0.1 CPython/3.10.6

Release files / what_vpn-0.7-py3-none-any.whl

Download URL what_vpn-0.7-py3-none-any.whl
Size 11.6 kB
Tags Python 3
SHA-256 checksum
How to use checksums
e394d58bed9d9d589f907754b52963c7c64268d1b3d00b86f0a72ec04603d309
BLAKE2b-256 checksum
How to use checksums
135f4f0397daccadd3ea5d82cb803fa241371ab889b9e8b88a5c02ae80353c26
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/4.0.1 CPython/3.10.6

Security for what-vpn 0.7

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

No provenance found

None of the files in this release were uploaded with provenance metadata.

A note on package security

PyPI is a repository for distributing packages, not a service for auditing them. While third-party security researchers and our staff do their best to detect and remove malicious packages, PyPI cannot guarantee the quality, security or suitability of any given package.

To learn more about protecting yourself from malicious actors, visit our package security documentation.

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page