The Point-to-Point Tunneling Protocol is a method for implementing virtual private networks.
PPTP uses a control channel over TCP and a GRE tunnel operating to encapsulate PPP packets.
The PPTP specification does not describe encryption or authentication features and relies on the
Point-to-Point Protocol being tunneled to implement security functionality.
However, the most common PPTP implementation shipping with the Microsoft Windows product
families implements various levels of authentication and encryption natively as standard features
of the Windows PPTP stack.
The intended use of this protocol is to provide security levels and remote access levels comparable
with typical VPN products.
A specification for PPTP was published in July 1999 as RFC 2637 and was developed by
a vendor consortium formed by Microsoft, Ascend Communications, 3Com, and others.
PPTP has not been proposed nor ratified as a standard by the Internet Engineering Task
Force.
Protocol description A PPTP tunnel is instantiated by communication
to the peer on TCP port 1723.
This TCP connection is then used to initiate and manage a second GRE tunnel to the same
peer.
The PPTP GRE packet format is non standard, including an additional acknowledgement field
replacing the typical routing field in the GRE header.
However, as in a normal GRE connection, those modified GRE packets are directly encapsulated
into IP packets, and seen as IP protocol number 47.
The GRE tunnel is used to carry encapsulated PPP packets, allowing the tunnelling of any
protocols that can be carried within PPP, including IP, NetBEUI and IPX.
In the Microsoft implementation, the tunneled PPP traffic can be authenticated with PAP,
CHAP, MS-CHAP v1/v2 . Implementations
PPTP was the first VPN protocol that was supported by Microsoft Dial-up Networking.
All releases of Microsoft Windows since Windows 95 OSR2 are bundled with a PPTP client, although
they are limited to only 2 concurrent outbound connections.
Microsoft Windows Mobile 2003 and higher also support the PPTP protocol.
The Routing and Remote Access Service for Microsoft Windows contains a PPTP server.
The Microsoft implementation uses single DES in the MS-CHAP authentication protocol which
many find unsuitable for data protection needs.
Windows Vista and later support the use of PEAP with PPTP.
The authentication mechanisms supported are PEAPv0/EAP-MSCHAPv2 and PEAP-TLS.
Windows Vista removed support for using the MSCHAP-v1 protocol to authenticate remote
access connections.
Linux server-side support for PPTP is provided by the PoPToP daemon and kernel modules for
PPP and MPPE.
Client-side Linux implementations of PPTP appeared in 1997, but the first widely used
server-side Linux PPTP implementation was developed by Matthew Ramsay in 1999 and initially
distributed under the GNU GPL by Moreton Bay.
However, Linux distributions initially lacked full PPTP support because MPPE was believed
to be patent encumbered.
Full MPPE support was added to the Linux kernel in the 2.6.14 release on October 28, 2005.
SuSE Linux 10 was the first Linux distribution to provide a complete working PPTP client.
There is also ACCEL-PPP – PPTPPPPoE server for Linux which supports PPTP in kernel-mode.
OpenBSD and FreeBSD both include PoPToP in their ports trees.
OS X and iOS include a built-in PPTP client, and OS X Server includes a PPTP service.
Cisco and Efficient Networks sell PPTP clients for older Mac OS releases.
Palm PDA devices with Wi-Fi are bundled with the Mergic PPTP client.
Many different Mobile phones with Android as the operating system support PPTP as well.
Security PPTP has been the subject of many security
analyses and serious security vulnerabilities have been found in the protocol.
The known vulnerabilities relate to the underlying PPP authentication protocols used, the design
of the MPPE protocol as well as the integration between MPPE and PPP authentication for session
key establishment.
A summary of these vulnerabilities is below: MS-CHAP-v1 is fundamentally unsecured.
Tools exist to trivially extract the NT Password hashes from a captured MSCHAP-v1 exchange.
When using MSCHAP-v1, MPPE uses the same RC4 session key for encryption in both directions
of the communication flow.
This can be cryptanalysed with standard methods by XORing the streams from each direction
together.
MS-CHAP-v2 is vulnerable to dictionary attack on the captured challenge response packets.
Tools exist to perform this process rapidly.
In 2012, it was shown that brute-force attack on MSCHAP-v2 is equivalent to single DES key
brute-force attack.
Online service was presented, which is capable to restore MSCHAP-v2 passphrase's MD4 in 23
hours.
MPPE uses RC4 stream cipher for encryption.
There is no method for authentication of the ciphertext stream and therefore the ciphertext
is vulnerable to a bit-flipping attack.
An attacker could modify the stream in transit and adjust single bits to change the output
stream without possibility of detection.
These bit flips may be detected by the protocols themselves through checksums or other means.
EAP-TLS is seen as the superior authentication choice for PPTP; however, it requires implementation
of a public-key infrastructure for both client and server certificates.
As such it is not a viable authentication option for many remote access installations.
See also IPsec
Layer 2 Tunneling Protocol Secure Socket Tunneling Protocol
OpenVPN, open source software application that implements VPN
References
External links Windows NT: Understanding PPTP from Microsoft
FAQ on security flaws in Microsoft's implementation, Bruce Schneier, 1998
Cryptanalysis of Microsoft's PPTP Authentication Extensions, Bruce Schneier, 1999
PPTP VPN Configuration