# Point-to-Point Tunneling Protocol

O Point-to-Point Tunneling Protocol (PPTP) é um método obsoleto de rede privada virtual, com diversos problemas de segurança. O PPTP utiliza um canal de controle sobre TCP e um túnel GRE para encapsular pacotes do tipo PPP.
A especificação do PPTP não descreve funcionalidades de criptografia ou autenticação e requer que o PPTP seja tunelado para que funcionalidades de segurança sejam implementadas. Contudo, a maioria das implementações de PPTP distribuídas na família de produtos Windows, implementa vários níveis de autenticação e criptografia nativamente como funcionalidade padrão da pilha PPTP. O uso comum deste protocolo é prover níveis de segurança e acesso remoto comparáveis a produtos típicos de VPN existentes(na época) no mercado.
Em Julho de 1999, foi publicada a especificação RFC 2637 desenvolvida em parceria entre Microsoft, Ascend Communications (hoje parte da Alcatel-Lucent), 3Com e outros. Contudo, esta publicação não foi proposta ou ratificada como um padrão aprovado pelo Internet Engineering Task Force.

## Descrição do protocolo

Um túnel PPTP é inicializado através da comunicação entre os pares na porta 1723/(TCP). Esta conexão é utilizada para iniciar e gerenciar uma segunda conexão(túnel) do tipo GRE entre o mesmo par de equipamentos participantes.
O pacote de formato PPTP GRE não é padrão, e inclui um campo adicional chamado acknowledgement no lugar do campo típico routing no cabeçalho GRE. Contudo, da mesma forma que uma conexão GRE convencional, estes pacotes GRE são enviados diretamente em pacotes IP encapsulados utilizando o número de protocolo 47.
O túnel GRE é utilizado para transportar os pacotes PPP encapsulados, permitindo o tunelamento de quaisquer protocolos que possam ser carregados pelo PPP, incluindo IP, NetBEUI e IPX.
Na implementação da Microsoft, o tráfego PPP tunelado pode ser autenticado utilizando PAP, CHAP, ou MS-CHAP v1/v2.

## Segurança

O PPTP foi alvo de diversas análises de segurança e sérias vulnerabilidades foram descobertas no protocolo. As vulnerabilidades conhecidas estão relacionadas com os protocolos de autenticação utilizados em conjunto com o PPP, o projeto do protocolo MPPE assim como a integração entre PPP e MPPE durante a autenticação e estabelecimento de chaves de sessão.
Um sumário destas vulnerabilidades encontra-se abaixo:
* O MS-CHAP-v1 é fundalmentalmente inseguro. Ferramentas existem para de forma trivial extrair hashes de senhas do NT após uma análise de tráfego MSCHAP-v1 capturado.
* Ao utilizar o MS-CHAP-v1, o MPPE utiliza a mesma chave de sessão RC4 para encriptar tráfego nos dois sentidos do fluxo. Este tráfego pode ser criptoanalisado com métodos padrão efetuando XOR dos fluxos de dados em ambas as direções para extrair informação
* MS-CHAP-v2 é vulnerável a ataques de dicionário em pacotes de resposta à desafio capturados. Ferramentas existem para efetuar este processo rapidamente.
* Em 2012, foi demonstrado que a complexidade de um ataque de força bruta em uma chave MS-CHAP-v2 é equivalente a um ataque de mesmo tipo em uma única chave DES. Um serviço online demonstrou que é capaz de de decriptar uma senha MS-CHAP-v2 em 23 horas..
* O MPPE utiliza o RC4 como cifra para o fluxo encriptado. Não existe um método para a autenticação do fluxo de texto cifrado portanto, este é vulnerável a ataques do tipo bit-flipping. Um atacante pode modificar o fluxo em trânsito e ajustar bits únicos para mudar o conteúdo de saída do fluxo sem que seja detectado. Estas trocas de bit podem ser detectados por outros protocolos através de checksums ou outros métodos.
EAP-TLS é visto como uma alternativa superior para a autenticação do PPTP; contudo, requer a implementação de PKI com certificados no cliente e no servidor. Este fato pode tornar inviável esta forma de autenticação para algumas localidades em que a instalação remota é necessária.