Назад | Перейти на главную страницу

Kerberos SSH Man-in-the-Middle для сниффинга данных

Kerberos явно не позволяет злоумышленнику получить учетные данные пользователя в сценарии SSH «человек посередине» (когда злоумышленник заставляет пользователя доверять открытому ключу своего сервера и перенаправляет трафик через этот сервер). Однако что, если злоумышленник не получит учетные данные пользователя, потому что он сможет прослушать сеанс после аутентификации и потенциально получить ценную информацию, включая введенные впоследствии учетные данные.

Для ясности, вот сценарий:

  1. Сервер SSH (Server1) и клиент (User1) настроены для Kerberos. Server1 имеет стандартную пару открытого / закрытого ключей для аутентификации и т. Д.
  2. Пользователь User1 первоначально пытается подключиться к Server1, но его соединение перенаправляется злоумышленником на Server2.
  3. Пользователь User1 не смотрит внимательно на открытый ключ от Server2, который представлен, и принимает его как известный ключ хоста для Server1 (таким образом настраивая MITM).
  4. Пользователь User1 проходит аутентификацию Kerberos с Server1 через Server2 (Server2 устанавливает два отдельных сеанса SSH и передает информацию между ними). Злоумышленник не получает никакой ценной информации во время аутентификации из-за того, как работает Kerberos.
  5. Однако после аутентификации User1 начинает выполнять операции на Server1, включая sudo. Злоумышленник может видеть все содержимое сеанса, когда оно проходит через Server2.

Это сработает? Очевидно, что этому сценарию будет препятствовать использование аутентификации с открытым ключом на этапе аутентификации. Но есть ли что-то в протоколе Kerberos или SSH, что могло бы предотвратить эту ситуацию?

Немного расширено из обсуждения в комментариях:

Ваш вопрос: если вы перенаправляете SSH-трафик от клиента на несанкционированный SSH-сервер, можно ли его использовать в атаке воспроизведения путем перехвата и пересылки клиентского билета Kerberos мошенническим SSH-сервером на настоящий Server1?

Это зависит от механизмов безопасности SSH, предотвращающих сбои атак MiTM, то есть клиент еще не кэшировал реальный ключ сервера от Server1 или, если он есть, StrictHostKeyChecking был отключен или проигнорирован.

Поскольку SSH + Kerberos GSS-API полагается на SSH для шифрования данных, вы предполагаете, что несанкционированный SSH-сервер посредника может, если аутентификация на Server1 прошла успешно, получить доступ ко всей передаваемой информации, поскольку SSH не использует Kerberos на основе шифрования данных поверх шифрования SSH.

Да, теоретически это сработает, но только в том случае, если ваш несанкционированный SSH-сервер, Server2, успешно олицетворяет клиента для Server1.

Я думаю, что настоящий Server1 отклонит (или, по крайней мере, должен) отклонить перенаправленные учетные данные. В рамках проверки подлинности Kerberos клиент отправляет два сообщения: Сервисный билет и аутентификатор. Хотя переадресованный служебный билет действителен, сопровождающий его аутентификатор не действителен.

RFC 4121 спецификация Kerberos GSS-API, которая используется SSH, содержит информацию о привязке канала как часть сообщения аутентификатора:

«Теги привязки канала предназначены для использования для идентификации конкретного канала связи, для которого предназначены маркеры установления контекста безопасности GSS-API, тем самым ограничивая область, в которой перехваченный маркер установления контекста может быть повторно использован злоумышленником».

Т.е. Сообщение Authenticator включает IP-адрес отправителя и порт источника, а также IP-адрес назначения и номера портов. Если они не соответствуют фактическому соединению, обмен Kerberos должен быть отклонен сервером Server1.