PPTP

Введение

PPTP (от англ. Point-to-Point Tunneling Protocol) — туннельный протокол типа точка-точка (узел-узел), позволяющий компьютеру устанавливать защищённое соединение с сервером за счёт создания туннеля в незащищённой сети.

PPTP помещает (инкапсулирует) кадры PPP в IP-пакеты для передачи по глобальной IP-сети, например Интернет. PPTP может также использоваться для организации туннеля между двумя локальными сетями. РРТР использует дополнительное TCP-соединение для обслуживания туннеля.

Данный протокол менее безопасен, чем IPSec. PPTP работает, устанавливая обычную PPP сессию с противоположной стороной с помощью протокола Generic Routing Encapsulation. Второе соединение на TCP-порте 1723 используется для инициации и управления GRE-соединением. PPTP сложно перенаправлять за сетевой экран, так как он требует одновременного установления двух сетевых сессий. PPTP-трафик может быть зашифрован с помощью MPPE. Для аутентификации клиентов могут использоваться различные механизмы, например — MS-CHAPv2 и EAP-TLS.

Вопрос безопасности и надежности протокола

  • MSCHAP-v1 совершенно ненадёжен. Существуют утилиты для лёгкого извлечения хэшей паролей из перехваченного обмена MSCHAP-v1;
  • MSCHAP-v2 уязвим к словарной атаке на перехваченные challenge-response пакеты. Существуют программы, выполняющие данный процесс;
  • В 2012 году было показано, что сложность подбора ключа MSCHAP-v2 эквивалентна подбору ключа к шифрованию DES, и был представлен онлайн-сервис, который способен восстановить ключ за 23 часа;
  • При использовании MSCHAP-v1, MPPE применяет одинаковый RC4 сессионный ключ для шифрования информационного потока в обоих направлениях. Поэтому стандартным методом является выполнение XOR’а потоков из разных направлений вместе, благодаря чему криптоаналитик может узнать ключ;
  • MPPE использует RC4 поток для шифрования. Не существует метода для аутентификации цифробуквенного потока, и поэтому данный поток уязвим к атаке, делающей подмену битов. Злоумышленник легко может заменить некоторые биты для изменения исходящего потока без опасности своего обнаружения. Данная подмена битов может быть зафиксирована с помощью протоколов, считающих контрольные суммы.

Структура

На рисунке 1 показано строение PPTP пакета. В целом — ничего особенного, в IP пакет инкапсулируется PPP кадр и GRE заголовок.

Рис. 1

Рис. 1

Кратко о GRE. Это протокол туннелирования, который работает на 3 уровне модели OSI. Функция GRE — инкапсуляция пакетов сетевого уровня сетевой модели OSI в IP пакеты.

Туннелирование подразумевает три протокола:

  • пассажир — инкапсулированный протокол (IP, CLNP, IPX, Apple Talk, DECnet Phase IV, XNS, VINES и Apollo);
  • протокол инкапсуляции (GRE);
  • транспортный протокол (IP).

Заголовок занимает 4 байта (рис. 2) и состоит из 2х частей:

1) 1-2 байты — flags:

— ChecksumPresent – бит 0, если равен 1, то в заголовке GRE присутствует необязательное поле контрольной суммы – Checksumfield;

— Key Present – бит 2, если равен 1, то в заголовке GRE присутствует необязательное поле, содержащее ключ – Key field;

— Sequence Number Present – бит 3, если равен 1, то в заголовке GRE присутствует необязательное поле порядкового номера – SequenceNumberfield;

— Version Number – биты 13–15. Данное поле обозначает версию реализации GRE. Значение 0 обычно используется для GRE. Point-To-Point протокол (PP2P) использует версию 1.

2) 3-4 байты. Содержат тип протокола (ethertype) инкапсулированного пакета.

Рис. 2

Рис. 2

MTU

Не менее важный вопрос для протокола — это вопрос MTU.

Так как PPTP — это полезная нагрузка + заголовок PPP+ GRE + заголовок IP. MTU Ethernet = 1500 байт, header IP = 20 байт, GRE = 4 байта. 1500-20-4 = 1476 байт.

Управляющие сообщения

В основе обмена данными по протоколу PPTP лежит управляющее соединение PPTP — последовательность управляющих сообщений, которые устанавливают и обслуживают туннель. Полное соединение PPTP состоит только из одного соединения TCP/IP, которое требует передачи эхо-команд для поддержания его открытым, пока выполняются транзакции. Ниже, на рисунке 3, указаны управляющие сообщения и их значения.

pptp

Оставить комментарий

*

code