Укрощение CISCO – брутим ключ к TACACS+ (часть 2)

За безумным словосочетанием Terminal Access Controller Access-Control System Plus (TACACS+) скрывается специальный протокол Cisco для AAA (authentication, authorization and accounting). Проще говоря, это протокол для централизованного управления доступом — чаще всего доступом именно к оборудованию Cisco, но не только к нему. Кстати, роутеры, свитчи и другие девайсы Cisco поддерживают еще и протокол RADIUS, но нас в на этот раз интересует именно Tacacs+.


Обычно поднимается один-два сервера с сервисом Tacacs+ (49/TCP) и на всех девайсах настраивается их использование. Когда кто-то хочет аутентифицироваться на свиче, его креды со свича передаются на сервер Tacacs+, где проходит проверка и принимается решение о  разрешении доступа.

Это удобное и централизованное решение с поддержкой логирования доступа. На серверной стороне можно прикрутить другую централизацию доступа — что-нибудь вроде AD или LDAP. К тому же есть опенсорсные реализации сервера — в Cisco когда-то решили официально опубликовать код.

С точки зрения безопасности протокол далек от идеала (ведь он был спроектирован в 1993 году), но критичных проблем у него нет. Данные передаются либо плейнтекстом, либо можно включить шифрование (что и является, насколько мне известно, стандартом). Организуется шифрование на основе PSK (PreShared Key), то есть администратор сам указывает один ключ на сервере Tacacs+ и всех подключающихся к нему устройствах.

Шифруются только пользовательские данные, заголовки Tacacs+ не шифруется.
Само шифрование происходит следующим образом. При помощи XOR данные пакета объединяются с последовательностью хешей MD5, котораяназывается pseudo_pad:

pseudo_pad = {MD5_1 [,MD5_2 [ ... ,MD5_n]]}

Хеши MD5 генерируются на основании данных из заголовков пакетов Tacacs+, к которым добавляется PSK и предыдущий хеш:

MD5_1 = MD5{session_id, key, version, seq_no}
MD5_2 = MD5{session_id, key, version, seq_no, MD5_1}
...
MD5_n = MD5{session_id, key, version, seq_no, MD5_n-1}

где session_id — случайный идентификатор сессии, version — версияпротокола, seq_no – инкрементируемый номер пакета, а key – PSK.

В 2000 году Solar Designer провел интересное исследование протокола, в котором была обнаружена возможность replay-атак, раскрытия длины пароля пользователя (из-за отсутствия padding) и кое-что ещё. Но данные атаки до практического использования не дотягивают (готовых тулз точно нет).
Что же мы можем сделать как пентестеры? Во-первых, мы можем провести MitM атаку и проснифить подключение от устройства Cisco к серверу Tacacs+. Далее нам понадобится локально брутфорсить трафик, а точнее — перебирать различные варианты PSK. С одной стороны, с нынешними мощностями MD5 – это очень быстро, с другой — брутфорс Tacacs+ не включен не в одну известную мне утилиту.

Но попробовать кое-что всё же можно. Во-первых, есть тулза Loki. Это некий комбайн для атак на L3-протоколы. Признаюсь, обнаружил я ее только недавно, но с виду она работает хорошо и умеет делать ряд интересных штук. Вездесущий Wireshark тоже позволяет расшифровать трафик Tacacs+ при имеющемся ключе (Edit -> Preferences -> Protocol -> Tacacs).
Кроме атаки, связанной с брутфорсом и перехватом трафика, есть ещё две вещи, о которых стоит рассказать. Представим себе, что с сервером Tacacs+ что-то произошло, и он не доступен для устройства Cisco, но админу может понадобиться залогиниться на этот девайс. Для таких целей
устройства Cisco поддерживают разные способы аутентификации, которые администратор должен указать при настройке.

Классическая конфигурация аутентификации для Cisco c Tacacs+ выглядит следующим образом:
aaa authentication login default group Tacacs+ local Нам здесь важны последние два слова, которые указывают, что сначала аутентификация будет проверена с помощью Tacacs+, а после — в локаль-
ной базе юзеров. Причём, если юзер не найден в Tacacs+, то он не будет проверяться локально.
В этом случае немаловажен человеческий фактор. Если администратор понадеется на Tacacs+, в локальной базе он может выставить менее секьюрные логины и пароли, и этим легко  воспользоваться.

Мы можем попытаться тем или иным способом заблокировать доступ от девайся Cisco к серверу Tacacs+. В результате устройство будет использовать локальную базу учеток, и перебирать пароли мы будем в ней (через Telnet или SSH). Например, мы можем использовать какую-нибудь
MitM-атаку или DoS-атаку на сам сервис Tacacs+. Во втором случае мы просто создадим большое количество подключений, отчего сервис не сможет получать новые. Этот способ не был мною протестирован, но с другими TCP-сервисами работает отлично.

Плюс в том, что наш брут скорее всего не будет зафиксирован в логах. Но есть и минус: другие девайсы Cisco тоже не смогут работать с Tacacs+, что должно вызвать беспокойство у  администраторов. Также у этой атаки есть и второй недостаток: очень часто серверы Tacacs+ располагаются в VLAN, которые доступны только для администраторов и сетевого оборудования — это рекомендации Cisco.
Первая часть материала здесь — Укрощение CISCO – брутим ключ к TACACS+

Click to rate this post!
[Total: 3 Average: 4.7]

Специалист в области кибер-безопасности. Работал в ведущих компаниях занимающихся защитой и аналитикой компьютерных угроз. Цель данного блога - простым языком рассказать о сложных моментах защиты IT инфраструктур и сетей.

7 comments On Укрощение CISCO – брутим ключ к TACACS+ (часть 2)

Leave a reply:

Your email address will not be published.