July 6, 2020

Перехват PPPoE сессии

На видео показан практический способ угона сессии PPPoE с помощью врезки в кабель. При этом не происходит перехвата логина или пароля и не имеет значения используемый тип авторизации (CHAP/PAP).

Большинство ethernet-провайдеров, к сожалению не используют шифрование всей сессии, ограничиваясь только шифрованием этапа авторизации. Это позволяет представиться легитимным клиентом, перехватив реквизиты существующего подключения.

Теория

PPPoE (Point-to-Point Protocol over Ethernet) — протокол канального уровня, на уровень ниже ip, поэтому для установки соединения не требуется ip-адреса, адресация происходит по MAC-ам.

Условно процесс подключение выглядит так:

Клиент в поисках pppoe-сервера посылает широковещательный запрос,
MAC-адрес назначения FF:FF:FF:FF:FF:FF.
Сервер отвечает клиенту и происходит авторизация (например CHAP Challenge)

В установленном соединении сервер идентифицирует клиента по MAC-адресу и Session ID. Пакеты IP инкапсулируются внутрь кадров PPPoE. В незашифрованном подключении всё содержимое пакетов может быть просмотрено:

Соответственно, узнав реквизиты подключения, можно перехватить сессию:

Для защиты от подобных атак существует опция CHAP Rechallenge, когда сервер повторно идентифицирует клиента с заданным интервалом времени. Ни один из протестированных провайдеров не использовал эту опцию.

В видео используется виртуальная машина, запущенная в режиме моста с ethernet картой хост-системы.
Во время переключения кабеля важно попасть между пакетами LCP-echo.
PPPoE-сервер www.roaringpenguin.com/products/pppoe перекомпилированный с опцией
#define DEFAULT_MAX_SESSIONS 64000

Спасибо kekekeks за помощь в ковырянии исходников сервера rp-pppoe.


Эта статья на хабре https://habr.com/ru/post/130710/