На каком участке используется механизм инкапсуляции eap over lan или eapol
На этой странице рассматривается как организовать аутентификацию при доступе к порту коммутатора, поддерживающего стандарт 802.1X. Описываются настройки коммутаторов, а также собственно клиентских машин, которые будут осуществлять доступ в сеть. Рассмотрены случаи, когда аутентификация выполняется для хоста под управлением Windows XP, Linux, на котором запущен Xsupplicant, и Mac OS X.
Протокол RADIUS, его устройство, а также процедура инсталляции и конфигурирования RADIUS-сервера рассматривается на другой странице.
Как защититься?
Для защиты от дурака обхода MAB придумали профилирование. Например, в Cisco ISE есть профили для Windows, для разных моделей принтеров и т.д. Если настроена политика разрешать доступ по MAB-у только принтерам, подмена MAC хакеру уже не поможет. Хорошо настроенное профилирование обойти достаточно сложно, так как злоумышленник не знает ни параметров профилирования (какие метрики собираются для идентификации устройства), ни параметров устройства (точные значения этих метрик).
Что касается защиты от атак на EAP, стоит отказаться от EAP-MD5 либо использовать достаточно сильные пароли. В случае с EAP-TTLS/EAP-PEAP/EAP-TLS/EAP-TTLS нужно принудительно запретить установку соединения, если сертификат сервера невалиден.
Для защиты от MITM-атак могут помочь разные виды детекта аномалий в сети. Если хакер, подключившись к порту, запустит брут или скан, неадекватное поведение хоста можно будет легко обнаружить и заблокировать порт. Однако, чем тише поведёт себя хакер, тем сложнее будет его обнаружить. Детект аномалий ― вещь хорошая, но 100%-ной защиты не даёт. Для 100%-ной защиты от MITM-атак нет ничего лучше, чем сейф шифрование. Например, IPsec.
А ещё есть 802.1xАЕ, также известный как 802.1x-2010, который предусматривает шифрование. Правда, уже после аутентификации.
Матчасть
IEEE 802.1X ― это стандарт, который используется для аутентификации и авторизации пользователей и рабочих станций в сети передачи данных. Он осуществляет контроль доступа и не позволяет неавторизованным устройствам подключаться к локальной сети. Наибольшее распространение протокол получил в беспроводных сетях, однако встречается и в проводных. В данной статье рассматривается его применение для проводных сетей.
Оглавление
Описание протокола 802.1x
Механизм аутентификации
В процессе аутентификации участвую 3 сущности:
Клиент (Client/Supplicant) ― программное обеспечение на стороне клиента, установленное на устройство пользователя и запрашивающее доступ к сети. Для запуска процесса аутентификации клиент использует Extensible Authentication Protocol via LAN (EAPoL)
Аутентификатор (Authenticator) ― устройство, которое обеспечивает связь клиента с сервером аутентификации по протоколу 802.1х и, в случае успешной авторизации ― доступ к сети.
Сервер аутентификации (Authentication Server) ― ААА-сервер, интегрированный с той или иной базой данных пользователей.
Аутентификация клиента происходит в несколько этапов:
На этом этапе клиент подключается к порту аутентификатора. Аутентификатор распознает факт подключения и активизирует логический порт для клиента, сразу переводя его в состояние "неавторизован" (uncontrolled). В результате через клиентский порт возможен лишь обмен трафиком протокола 802.1x, для всего остального трафика порт заблокирован.
Аутентификатор ожидает от клиента запрос на аутентификацию (EAPOL-Start). Когда аутентификатор получает запрос, он посылает клиенту EAP-request/identity. Клиент в ответ высылает EAP-response со своим идентификатором (например, именем пользователя), который аутентификатор перенаправляет в сторону сервера аутентификации, предварительно завернув в RADIUS Access-Request.
Сервер аутентификации и клиент договариваются о методе EAP, по которому будет проходить аутентификация.
EAP используется для выбора метода аутентификации, передачи ключей и обработки этих ключей подключаемыми модулями, называемыми методами EAP. Рассмотрим самые распространённые методы EAP.
Сервер аутентификации посылает запрос EAP-Request-Identity клиенту.
Клиент в ответ посылает EAP-Response-Identity.
После получения EAP-Response-Identity сервер генерирует случайную строку (challenge string) и отправляет клиенту MD5-Challenge-Request с этой строкой.
Клиент объединяет имя пользователя, пароль в открытом виде и challenge string в одно значение и отправляет хэш MD5 этого значения на сервер аутентификации как MD5-ChallengeResponse
После получения MD5-Challenge-Response сервер аутентификации самостоятельно считает MD5-хэш от данных пользователя и отправленной строки challenge string и сравнивает с хэшом, полученным от клиента. Если хеши совпадают, аутентификация завершается успешно.
У этого метода EAP есть существенный недостаток: как MD5-Challenge-Request, так и MD5-Challenge-Response могут быть перехвачены. В результате можно сбрутить пароль пользователя.
EAP-PEAP/EAP-TTLS
Аутентификация проходит в 2 этапа – внешний и внутренний
1. Внешняя аутентификация:
1.1 Клиент посылает Authentication Request на сервер аутентификации.
1.2. Сервер в ответ посылает свой сертификат
1.3. Клиент проверяет сертификат сервера, и, если всё в порядке, внешняя аутентификация проходит успешно.
1.4. Клиент и сервер устанавливают TLS-соединение.
2. Внутренняя аутентификация через установленный безопасный канал. При этом существует много различных протоколов аутентификации, однако наиболее часто используется MS-CHAPv2.
Основная проблема такого подхода заключается в том, что соединение может быть установлено, даже если сертификат невалиден. Например, если в настройках не стоит галочка «Проверять сертификат сервера».
Отличие этого метода от предыдущего заключается в том, что на внешнем этапе аутентификации происходит проверка подлинности не только сервера, но и клиента. После взаимной проверки подлинности аутентификация проходит по протоколу TLS.
Это куда более безопасно, но сложнее в реализации. На всех клиентских устройствах нужно установить клиентский сертификат.
Основная проблема такого подхода заключается в том, что соединение может быть установлено, даже если сертификат невалиден. Например, если в настройках не стоит галочка «Проверять сертификат сервера».
MAB (MAC Authentication Bypass) – это вариант «аутентификации» для устройств, которые не поддерживают протокол 802.1x. Если к порту коммутатора, на котором настроена аутентификация, требуется подключить такое устройство, то, чтобы не отключать на этом порту аутентификацию, был придуман более слабый механизм. Весь процесс аутентификации по MAB заключается в проверке MAC-адреса устройства.
Содержание
Согласно протоколу 802.1X доступ к сети получают только клиенты прошедшие аутентификацию, если аутентификация не была пройдена, доступ с соответствующего порта будет запрещен.
802.1X предполагает использование модели точка-точка. То есть он не может быть применен в ситуациях когда несколько хостов соединяются с коммутатором (на котором настроена аутентификация 802.1X) через хаб или через другой коммутатор.
Supplicant — устройство (компьютер, ноутбук или др.) которое запрашивает доступ к сети у аутентификатора (коммутатора или точки доступа) и отвечает на его запросы. На клиенте должно быть установлено (или встроено) программное обеспечение работающее по протоколу 802.1X.
- Xsupplicant
- Windows 2000/XP (built in)
- Mac OS X (built in)
Supplicant может быть встроен в коммутатор. Пример настройки коммутатора в роли supplicant на странице 802.1X и RADIUS
Аутентификатор (authenticator) — устройство контролирующее физический доступ к сети основываясь на статусе аутентификации клиента. Выполняет роль посредника (proxy) между клиентом и сервером аутентификации.
- коммутаторы (с поддержкой 802.1X)
- Пример настройки Cisco
- Пример настройки ProCurve
Для каждого порта коммутатора (с включенным 802.1X) создается два виртуальных порта:
- Контролируемый порт (controlled port) — открывается только после авторизации по 802.1X
- Неконтролируемый порт (uncontrolled port) — разрешает передавать только EAPOL трафик
До тех пор пока клиент не авторизован только EAPOL трафик разрешен на неконтролируемом порту.
Кроме терминов контролируемый и неконтролируемый порты применяются термины авторизованный (authorized) и неавторизованный (unauthorized) порты, соответственно.
Сервер аутентификации (authentication server) — осуществляет аутентификацию клиента. Сервер аутентификации проверяет identity клиента и сообщает аутентификатору разрешен ли клиенту доступ к сети.
Атаки
А теперь самое интересное. Расскажу, как мы обходим 802.1X.
Обход MAB
Самый простой метод обхода. MAB вообще как будто был придуман специально для пентестеров. Даже в названии присутствует слово «Bypass».
В общем, находим старенький принтер (камеру, телефон, PDP-11…), узнаём его MAC-адрес и отключаем от коммутатора. Меняем свой MAC на МАС устройства и подключаемся вместо него.
В последнее время метод несколько потерял актуальность за счёт использования профилирования (подробнее в разделе «Как защититься»)
Классическая атака (Bridged-based)
Экскурс в историю
В 2005 году Стив Райли, исследователь из Microsoft, обнаружил уязвимость в протоколе 802.1x, которая приводила к возможности атак «Человек посередине». Суть уязвимости заключалась в том, что аутентификация по протоколу 802.1x происходит только при установке нового соединения. Когда клиент, подключившийся к порту коммутатора, проходит аутентификацию, порт переходит в состояние «controlled» и все последующие соединения от этого клиента не требуют аутентификации. Злоумышленник, разместивший хаб между аутентифицировавшимся клиентом и портом коммутатора, может подключить своё устройство к хабу и отправлять пакеты в сеть, подменив исходные MAC- и IP-адреса на адреса легитимного клиента.
Хост злоумышленника отправляет SYN-пакет в сеть.
В ответ приходит SYN / ACK, который попадает на оба устройства: и хост злоумышленника, и хост клиента.
Клиент отправляет RST / ACK.
Хост злоумышленника отправляет ACK.
Логичным развитием MITM-атаки стало использование моста.
Алгоритм атаки
Нам понадобится ноутбук с двумя интерфейсами и какой-нибудь сотрудник компании (а точнее, его девайс).
Одним интерфейсом подключаемся к девайсу, а другим – к порту коммутатора (розетке на стене). Дальше делаем следующее:
Переводим интерфейсы в Promisc-режим
Поднимаем между ними мост и тоже переводим в Promisc-режим
MAC девайса меняем на MAC коммутатора
Настраиваем SNAT для пакетов, которые отправляем сами – они должны выглядеть так, как будто их отправил девайс.
Добавляется маршрут в сеть за коммутатором через мост
Rogue Gateway Attack
Тот же Evil Twin, только в LAN. Работает в случае, если клиент сконфигурирован так, что соединение может быть установлено даже в случае невалидного сертификата сервера. Например, в настройках не стоит галочка «Проверять сертификат сервера».
Поднимаем мост и начинаем слушать трафик. В результате выясняем параметры клиента и аутентификатора:
Маршрут по умолчанию
Дальше начинается сама атака.
Поднимаем поддельный RADIUS-сервер и выключаем интерфейс, подключенный к аутентификатору.
Затем отправляем на поддельный RADIUS-сервер кадр EAPOL-Start с MAC-адресом клиента. В результате сервер отвечает клиенту запросом EAP-Request-Identity.
Если клиент примет сертификат, то он аутентифицируется у поддельного сервера.
Атакующий прослушивает MS-CHAPv2-challenge и response, сгенерированный на основе NTLM-хэша пароля. [AY1] В случае использования словарного пароля его можно получить перебором по словарю.
Если атака прошла успешно, можно отключить клиента от сети и авторизоваться с его данными.
Атака на EAP-MD5
EAP-MD5 ― это один из самых простых в настройке методов EAP. Он часто используется на периферийных устройствах.
Атака заключается в перехвате MD5-Challenge-Request и MD5-Challenge-Response с последующим брутом MD5-хэша. Для этого, как и в предыдущих атаках, поднимается мост между клиентом и аутентификатором.
Единственная проблема: клиент должен аутентифицироваться после того, как мы начали слушать трафик. Можно просто отключить его от сети и включить заново, однако это заметно и нельзя сделать удалённо (например, если мы оставили Raspberry Pi в офисе, а всю работу хотим сделать из дома). Можно заставить клиента ре-аутентифицироваться, просто отправив «EAPoL-start» аутентификатору от его имени.
Продемонстрируем классическую Bridged-Based атаку с использованием Fenrir.
Стэнд
Радиус-сервер (Cisco-ISE, интегрированная с AD)
На Cisco ISE были использованы следующие политики:
802.1x c EAP-MD5 – для всех подключаемых устройств
802.1x c EAP-TTLS – для всех подключаемых устройств
Доменная машина с Windows
Kali с Fenrir-ом
Описание атаки
Пробуем подключиться к порту свича, сети нет.
Подключаем доменный комп в интерфейс нашей kali, другой интерфейс подключаем к коммутатору.
Запускаем консоль Fenrir и настраиваем параметры моста: указываем MAC- и IP- адреса свича и клиента. Вводим команду create_virtual_tap
Видим, что появился новый интерфейс FENRIR. Прописываем для него IP-адрес.
Вводим команду run в консоли Fenrir и подключаемся к сети. Теперь мы можем сканить nmap-ом и запускать другие полезные тулзы типа crackmapexec.
Ограничения
Нужно как-то пронести устройство на территорию. Более того, воткнуть между коммутатором и авторизованным устройством. Если нет авторизованного устройства, ничего не получится.
Мы получаем доступ аналогичный тому, который имеет авторизовавшееся устройство. То есть если мы воткнемся между принтером и коммутатором, с одной стороны классно – мы сразу попали в сеть… а с другой - мы всего лишь жалкий принтер.
Выводы
Большинство современных организаций если и внедряют NAC в корпоративной сети, то ограничиваются первой версией протокола 802.1x, которая не предусматривает шифрования канала после аутентификации. Как показано в статье, для злоумышленников не составит труда встроить свой трафик в такой канал (классическая bridged-based атака).
Внедрение шифрования - 802.1AE либо IPSec сопряжено с большими трудностями: как минимум, потребуется установка дополнительных компонентов на каждое клиентское устройство.
Даже при успешном внедрении 802.1AE остаются актуальными атаки, направленные на уязвимости EAP (Rouge Gateway или атака на EAP-MD5).
Идеальная конфигурация, которая на 99,9% защитила бы LAN от обхода авторизации, выглядит примерно так:
Всем устройствам вроде принтеров, телефонов и тп, на которые нельзя поставить клиент для macsec, устанавливается минимальный необходимый доступ.
На всех остальных устройствах используется MAСsec+EAP-TLS (с обязательной проверкой сертификата сервера)
На всех транковых портах (которым коммутаторы соединяются между собой) используется macsec+NEAT (это когда вышестоящий коммутатор авторизует нижестоящий), чтобы минимизировать риск MITM-атаки на межкоммутаторных портах.
Протокол 802.1X работает на канальном уровне и определяет механизм контроля доступа к сети на основе принадлежности к порту (в контексте стандарта порт — точка подключения к сети).Наибольшее распространение протокол получил в беспроводных сетях. В данной статье рассматривается его применение для проводных сетей.
Содержание
- Протокол RADIUS
- Обзор доступных RADIUS-серверов с открытым исходным кодом
- Инсталляция и настройка RADIUS-сервера FreeRADIUS
- Web-интерфейс RADIUS-сервера
- Организация PPPoE сервера с аутентификацией через RADIUS
- Совместное использование Active Directory и RADIUS-сервера FreeRADIUS
- Организация доступа к портам коммутатора с помощью 802.1X и RADIUS (802.1X RADIUS)
- Настройка XSupplicant
AAA (authentication, authorization, accounting) — это набор сервисов сетевой безопасности, которые определяют подход для организации контроля доступа к сети.
Authentication (аутентификация) — процеcс подтверждения пользователем своей подлиности, подтверждения того, что пользователь запрашивающий сервис легитимный пользователь системы (в системе существует учетная запись для этого пользователя). Аутентификация может осуществляться по паролю, смарт-карте, сертификату и др.
Authorization (авторизация) — определяет какие сервисы будут доступны или какие сервисы будут запрещены пользователю прошедшему аутентификацию.
Accounting (учёт) — слежение за потреблением сетевых ресурсов пользователем.
EAPOL (EAP over LANs) — протокол определяющий способ инкапсуляции, который позволяет передавать пакеты EAP между supplicant и аутентификатором в локальных проводных сетях.
PAE (Port Access Entity) — отвечает за выполнение алгоритмов и протоколов.
Базовая настройка 802.1X на интерфейсе fa0/1 и настройка параметров RADIUS-сервера:
Основная страница: 802.1X в Cisco
Базовая настройка 802.1X на портах 1-12 и настройка параметров RADIUS-сервера:
Тема безопасности беспроводных сетей по-прежнему остается актуальной, хотя уже достаточно давно существуют надежные (на сегодняшний момент, конечно же) методы защиты этих сетей. Разумеется, речь идет о технологии WPA (Wi-Fi Protected Access).
Большинство существующего на данный момент Wi-Fi оборудования имеет поддержку данной технологии, но, к сожалению, до сих пор в нашей лаборатории попадаются экземпляры, не знающие о WPA. Это более чем странно — заканчивается 2005 год, а некоторые производители до сих пор считают, что технология WEP спасет пользователей беспроводной сети от утечки информации. WEP уже давно устарела. На смену этой технологии пришел WPA, а также на горизонте виднеется новый стандарт 802.11i (некоторые производители преподносят его, как WPA2).
- протокол 802.1x — универсальный протокол для аутентификации, авторизации и учета (AAA)
- протокол EAP — расширяемый протокол аутентификации (Extensible Authentication Protocol)
- протокол TKIP — протокол временнОй целостности ключей, другой вариант перевода — протокол целостности ключей во времени (Temporal Key Integrity Protocol)
- MIC — криптографическая проверка целостности пакетов (Message Integrity Code)
- протокол RADIUS
За шифрование данных в WPA отвечает протокол TKIP, который, хотя и использует тот же алгоритм шифрования — RC4 — что и в WEP, но в отличие от последнего, использует динамические ключи (то есть ключи часто меняются). Он применяет более длинный вектор инициализации и использует криптографическую контрольную сумму (MIC) для подтверждения целостности пакетов (последняя является функцией от адреса источника и назначения, а также поля данных).
RADIUS-протокол предназначен для работы в связке с сервером аутентификации, в качестве которого обычно выступает RADIUS-сервер. В этом случае беспроводные точки доступа работают в enterprise-режиме.
Если в сети отсутствует RADIUS-сервер, то роль сервера аутентификации выполняет сама точка доступа — так называемый режим WPA-PSK (pre-shared key, общий ключ). В этом режиме в настройках всех точек доступа заранее прописывается общий ключ. Он же прописывается и на клиентских беспроводных устройствах. Такой метод защиты тоже довольно секьюрен (относительно WEP), очень не удобен с точки зрения управления. PSK-ключ требуется прописывать на всех беспроводных устройствах, пользователи беспроводных устройств его могут видеть. Если потребуется заблокировать доступ какому-то клиенту в сеть, придется заново прописывать новый PSK на всех устройствах сети и так далее. Другими словами, режим WPA-PSK подходит для домашней сети и, возможно, небольшого офиса, но не более того.
В этой серии статей будет рассмотрена работа WPA совместно с внешним RADIUS-сервером. Но прежде чем перейти к ней, немного подробнее остановимся на механизмах работы WPA. А перед этим рассмотрим технологию WPA2.
Технология WPA являлась временной мерой до ввода в эксплуатацию стандарта 802.11i. Часть производителей до официального принятия этого стандарта ввели в обращение технологию WPA2, в которой в той или иной степени используются технологии из 802.11i. Такие как использование протокола CCMP (Counter Mode with Cipher Block Chaining Message Authentication Code Protocol), взамен TKIP, в качестве алгоритма шифрования там применяется усовершенствованный стандарт шифрования AES (Advanced Encryption Standard). А для управления и распределения ключей по-прежнему применяется протокол 802.1x.
Как уже было сказано выше, протокол 802.1x может выполнять несколько функций. В данном случае нас интересуют функции аутентификации пользователя и распределение ключей шифрования. Необходимо отметить, что аутентификация происходит «на уровне порта» — то есть пока пользователь не будет аутентифицирован, ему разрешено посылать/принимать пакеты, касающиеся только процесса его аутентификации (учетных данных) и не более того. И только после успешной аутентификации порт устройства (будь то точка доступа или умный коммутатор) будет открыт и пользователь получит доступ к ресурсам сети.
- EAP-SIM, EAP-AKA — используются в сетях GSM мобильной связи
- LEAP — пропреоретарный метод от Cisco systems
- EAP-MD5 — простейший метод, аналогичный CHAP (не стойкий)
- EAP-MSCHAP V2 — метод аутентификации на основе логина/пароля пользователя в MS-сетях
- EAP-TLS — аутентификация на основе цифровых сертификатов
- EAP-SecureID — метод на основе однократных паролей
рис.1, структура EAP-кадраКроме вышеперечисленных, следует отметить следующие два метода, EAP-TTLS и EAP-PEAP. В отличие от предыдущих, эти два метода перед непосредственной аутентификацией пользователя сначала образуют TLS-туннель между клиентом и сервером аутентификации. А уже внутри этого туннеля осуществляется сама аутентификация, с использованием как стандартного EAP (MD5, TLS), или старых не-EAP методов (PAP, CHAP, MS-CHAP, MS-CHAP v2), последние работают только с EAP-TTLS (PEAP используется только совместно с EAP методами). Предварительное туннелирование повышает безопасность аутентификации, защищая от атак типа «man-in-middle», «session hihacking» или атаки по словарю.
рис.2, 802.1x в действии- Supplicant — софт, запущенный на клиентской машине, пытающейся подключиться к сети
- Authenticator — узел доступа, аутентификатор (беспроводная точка доступа или проводной коммутатор с поддержкой протокола 802.1x)
- Authentication Server — сервер аутентификации (обычно это RADIUS-сервер)
Описанный процесс проиллюстрирован на рис.3 (там показан один из простейших методов EAP):
рис.3, процесс аутентификацииКак видно из рисунка, для коммуникации между клиентом (supplicant) и точкой доступа (authenticator) используются пакеты EAPOL. Протокол RADIUS используется для обмена информацией между аутентификатором (точкой доступа) и RADIUS-сервером (сервером аутентификации). При транзитной пересылке информации между клиентом и сервером аутентификации пакеты EAP переупаковываются из одного формата в другой на аутентификаторе.
Детальное рассмотрение алгоритмов шифрования, а также методы генерации сессионных ключей шифрования, пожалуй, выходят за рамки данного материала, поэтому рассмотрю их лишь вкратце.
Первоначальная аутентификация производится на основе общих данных, о которых знают и клиент, и сервер аутентификации (как то логин/пароль, сертификат и т.д.) — на этом этапе генерируется Master Key. Используя Master Key, сервер аутентификации и клиент генерируют Pairwise Master Key (парный мастер ключ), который передается аутентификатору со стороны сервера аутентификации. А уже на основе Pairwise Master Key и генерируются все остальные динамические ключи, которым и закрывается передаваемый трафик. Необходимо отметить, что сам Pairwise Master Key тоже подлежит динамической смене.
Теперь перейдем от сухой теории к реальности, а именно реализации WPA в Windows XP. Нормальная поддержка WPA (с поддержкой AES) появилась, только начиная с windows service pack 2.
рис.4- MD5-Challenge — самый примитивный и слабый, рассматривать не будем;
- PEAP (Protected EAP) позволяет производить аутентификацию на основе сертификатов или логина/пароля. Он нам интересен в первую очередь возможностью аутентификации пользователя, используя логин/пароль. При этом нам не требуется настраивать инфраструктуру открытых ключей (PKI). Достаточно подключить RADIUS-сервер к какой-либо базе (обычный файл, mysql, ldap) с хранящимися пользователями и производить аутентификацию пользователей по ней.
- Smart Card or Other Certificate — обычный EAP-TLS. Требует настроенной PKI, использует сертификаты для аутентификации клиентов. Более гибок (разумеется, после настройки PKI), чем аутентификация по логину/паролю. А также является единственным способом получить работающую связку беспроводных пользователей, работающих в Windows-домене.
Во второй части статьи будет рассмотрена настройка Windows-клиентов (Windows XP SP2), RADIUS-сервера (FreeRadius), и PKI на основе OpenSSL. Последние два компонента работают в операционной системе Gentoo Linux.
В последнее время появилось много «разоблачающих» публикаций о взломе какого-либо очередного протокола или технологии, компрометирующего безопасность беспроводных сетей. Так ли это на самом деле, чего стоит бояться, и как сделать, чтобы доступ в вашу сеть был максимально защищен? Слова WEP, WPA, 802.1x, EAP, PKI для вас мало что значат? Этот небольшой обзор поможет свести воедино все применяющиеся технологии шифрования и авторизации радио-доступа. Я попробую показать, что правильно настроенная беспроводная сеть представляет собой непреодолимый барьер для злоумышленника (до известного предела, конечно).
Основы
Любое взаимодействие точки доступа (сети), и беспроводного клиента, построено на:
- Аутентификации — как клиент и точка доступа представляются друг другу и подтверждают, что у них есть право общаться между собой;
- Шифровании — какой алгоритм скремблирования передаваемых данных применяется, как генерируется ключ шифрования, и когда он меняется.
Параметры беспроводной сети, в первую очередь ее имя (SSID), регулярно анонсируются точкой доступа в широковещательных beacon пакетах. Помимо ожидаемых настроек безопасности, передаются пожелания по QoS, по параметрам 802.11n, поддерживаемых скорости, сведения о других соседях и прочее. Аутентификация определяет, как клиент представляется точке. Возможные варианты:
- Open — так называемая открытая сеть, в которой все подключаемые устройства авторизованы сразу
- Shared — подлинность подключаемого устройства должна быть проверена ключом/паролем
- EAP — подлинность подключаемого устройства должна быть проверена по протоколу EAP внешним сервером
- None — отсутствие шифрования, данные передаются в открытом виде
- WEP — основанный на алгоритме RC4 шифр с разной длиной статического или динамического ключа (64 или 128 бит)
- CKIP — проприетарная замена WEP от Cisco, ранний вариант TKIP
- TKIP — улучшенная замена WEP с дополнительными проверками и защитой
- AES/CCMP — наиболее совершенный алгоритм, основанный на AES256 с дополнительными проверками и защитой
Шифрование WEP скомпрометировано, и использовать его нельзя (даже в случае динамических ключей).
Широко встречающиеся термины WPA и WPA2 определяют, фактически, алгоритм шифрования (TKIP либо AES). В силу того, что уже довольно давно клиентские адаптеры поддерживают WPA2 (AES), применять шифрование по алгоритму TKIP нет смысла.
Разница между WPA2 Personal и WPA2 Enterprise состоит в том, откуда берутся ключи шифрования, используемые в механике алгоритма AES. Для частных (домашних, мелких) применений используется статический ключ (пароль, кодовое слово, PSK (Pre-Shared Key)) минимальной длиной 8 символов, которое задается в настройках точки доступа, и у всех клиентов данной беспроводной сети одинаковым. Компрометация такого ключа (проболтались соседу, уволен сотрудник, украден ноутбук) требует немедленной смены пароля у всех оставшихся пользователей, что реалистично только в случае небольшого их числа. Для корпоративных применений, как следует из названия, используется динамический ключ, индивидуальный для каждого работающего клиента в данный момент. Этот ключ может периодический обновляться по ходу работы без разрыва соединения, и за его генерацию отвечает дополнительный компонент — сервер авторизации, и почти всегда это RADIUS-сервер.
Если с WPA2 Personal (WPA2 PSK) всё ясно, корпоративное решение требует дополнительного рассмотрения.
WPA2 Enterprise
Здесь мы имеем дело с дополнительным набором различных протоколов. На стороне клиента специальный компонент программного обеспечения, supplicant (обычно часть ОС) взаимодействует с авторизующей частью, AAA сервером. В данном примере отображена работа унифицированной радиосети, построенной на легковесных точках доступа и контроллере. В случае использования точек доступа «с мозгами» всю роль посредника между клиентов и сервером может на себя взять сама точка. При этом данные клиентского суппликанта по радио передаются сформированными в протокол 802.1x (EAPOL), а на стороне контроллера они оборачиваются в RADIUS-пакеты.Применение механизма авторизации EAP в вашей сети приводит к тому, что после успешной (почти наверняка открытой) аутентификации клиента точкой доступа (совместно с контроллером, если он есть) последняя просит клиента авторизоваться (подтвердить свои полномочия) у инфраструктурного RADIUS-сервера:
- Microsoft Network Policy Server (NPS), бывший IAS — конфигурируется через MMC, бесплатен, но надо купить винду
- Cisco Secure Access Control Server (ACS) 4.2, 5.3 — конфигурируется через веб-интерфейс, наворочен по функционалу, позволяет создавать распределенные и отказоустойчивые системы, стоит дорого
- FreeRADIUS — бесплатен, конфигурируется текстовыми конфигами, в управлении и мониторинге не удобен
При этом контроллер внимательно наблюдает за происходящим обменом информацией, и дожидается успешной авторизации, либо отказа в ней. При успехе RADIUS-сервер способен передать точке доступа дополнительные параметры (например, в какой VLAN поместить абонента, какой ему присвоить IP-адрес, QoS профиль и т.п.). В завершении обмена RADIUS-сервер дает возможность клиенту и точке доступа сгенерировать и обменяться ключами шифрования (индивидуальными, валидными только для данной сеcсии):
- EAP-FAST (Flexible Authentication via Secure Tunneling) — разработан фирмой Cisco; позволяет проводить авторизацию по логину-паролю, передаваемому внутри TLS туннеля между суппликантом и RADIUS-сервером
- EAP-TLS (Transport Layer Security). Использует инфраструктуру открытых ключей (PKI) для авторизации клиента и сервера (суппликанта и RADIUS-сервера) через сертификаты, выписанные доверенным удостоверяющим центром (CA). Требует выписывания и установки клиентских сертификатов на каждое беспроводное устройство, поэтому подходит только для управляемой корпоративной среды. Сервер сертификатов Windows имеет средства, позволяющие клиенту самостоятельно генерировать себе сертификат, если клиент — член домена. Блокирование клиента легко производится отзывом его сертификата (либо через учетные записи).
- EAP-TTLS (Tunneled Transport Layer Security) аналогичен EAP-TLS, но при создании туннеля не требуется клиентский сертификат. В таком туннеле, аналогичном SSL-соединению браузера, производится дополнительная авторизация (по паролю или как-то ещё).
- PEAP-MSCHAPv2 (Protected EAP) — схож с EAP-TTLS в плане изначального установления шифрованного TLS туннеля между клиентом и сервером, требующего серверного сертификата. В дальнейшем в таком туннеле происходит авторизация по известному протоколу MSCHAPv2
- PEAP-GTC (Generic Token Card) — аналогично предыдущему, но требует карт одноразовых паролей (и соответствующей инфраструктуры)
Все эти методы (кроме EAP-FAST) требуют наличия сертификата сервера (на RADIUS-сервере), выписанного удостоверяющим центром (CA). При этом сам сертификат CA должен присутствовать на устройстве клиента в группе доверенных (что нетрудно реализовать средствами групповой политики в Windows). Дополнительно, EAP-TLS требует индивидуального клиентского сертификата. Проверка подлинности клиента осуществляется как по цифровой подписи, так (опционально) по сравнению предоставленного клиентом RADIUS-серверу сертификата с тем, что сервер извлек из PKI-инфраструктуры (Active Directory).
Поддержка любого из EAP методов должна обеспечиваться суппликантом на стороне клиента. Стандартный, встроенный в Windows XP/Vista/7, iOS, Android обеспечивает как минимум EAP-TLS, и EAP-MSCHAPv2, что обуславливает популярность этих методов. С клиентскими адаптерами Intel под Windows поставляется утилита ProSet, расширяющая доступный список. Это же делает Cisco AnyConnect Client.
Насколько это надежно
В конце концов, что нужно злоумышленнику, чтобы взломать вашу сеть?
Для Open Authentication, No Encryption — ничего. Подключился к сети, и всё. Поскольку радиосреда открыта, сигнал распространяется в разные стороны, заблокировать его непросто. При наличии соответствующих клиентских адаптеров, позволяющих прослушивать эфир, сетевой трафик виден так же, будто атакующий подключился в провод, в хаб, в SPAN-порт коммутатора.
Для шифрования, основанного на WEP, требуется только время на перебор IV, и одна из многих свободно доступных утилит сканирования.
Для шифрования, основанного на TKIP либо AES прямое дешифрование возможно в теории, но на практике случаи взлома не встречались.Конечно, можно попробовать подобрать ключ PSK, либо пароль к одному из EAP-методов. Распространенные атаки на данные методы не известны. Можно пробовать применить методы социальной инженерии, либо терморектальный криптоанализ.
Получить доступ к сети, защищенной EAP-FAST, EAP-TTLS, PEAP-MSCHAPv2 можно, только зная логин-пароль пользователя (взлом как таковой невозможен). Атаки типа перебора пароля, или направленные на уязвимости в MSCHAP также не возможны либо затруднены из-за того, что EAP-канал «клиент-сервер» защищен шифрованным туннелем.
Доступ к сети, закрытой PEAP-GTC возможен либо при взломе сервера токенов, либо при краже токена вместе с его паролем.
Доступ к сети, закрытой EAP-TLS возможен при краже пользовательского сертификата (вместе с его приватным ключом, конечно), либо при выписывании валидного, но подставного сертификата. Такое возможно только при компрометации удостоверяющего центра, который в нормальных компаниях берегут как самый ценный IT-ресурс.
Поскольку все вышеозначенные методы (кроме PEAP-GTC) допускают сохранение (кэширование) паролей/сертификатов, то при краже мобильного устройства атакующий получает полный доступ без лишних вопросов со стороны сети. В качестве меры предотвращения может служить полное шифрование жесткого диска с запросом пароля при включении устройства.
Запомните: при грамотном проектировании беспроводную сеть можно очень хорошо защитить; средств взлома такой сети не существует (до известного предела)
В этом посте я продемонстрирую, как легко можно обойти 802.1x на внутреннем пентесте. За редкими исключениями, но их мы тоже обсудим.
802.1x AE
Разработан специально для решения проблемы с MITM-атаками и включает протокол MACSec для шифрования трафика на уровне L2.
Соединение проходит в 3 этапа:
Аутентификация и распределение ключей. Предполагается, что аутентификация проходит с использованием одного из методов EAP, однако протокол позволяет также использовать PSK.
Согласование сеансового ключа
Создание безопасной сессии
Рассмотрим пример с EAP-аутентификацией.
Как было описано ранее (см. «Механизм аутентификации), когда клиент впервые подключается к порту коммутатора, аутентификатор отправляет EAPRequest-Identity клиенту. Клиент отвечает EAP-response, который пересылается серверу Аутентификации.
На следующем этапе клиент и сервер аутентификации согласовывают метод EAP, который будет использоваться для аутентификации. Далее клиент аутентифицируется по выбранному методу EAP. В случае успешной аутентификации клиент и аутентификатор устанавливают зашифрованный канал связи по протоколу MACSec.
Как видим, MACSec хорошо работает против классических bridged-based атак: встроить свои пакеты в зашифрованный трафик уже не получится. Однако атаки на слабые методы EAP (Rouge Gateway или атака на EAP-MD5) остаются актуальными.
Читайте также: