Защита от сниффинга в wi fi
Занимаясь активным или пассивным
сниффингом, всегда стоит помнить, что по ту
сторону баррикад сидят тоже неглупые люди,
которым платят деньги как раз за то, что бы
они вовремя обнаруживали таких любопытных
как ты. Рассмотрим сейчас, каким образом
администратор сети сможет выявить
использование сниффера и что он может
предпринять.
Обнаружение работы снифферов.
Обнаружение снифферов в сетях на
коммутаторах.
Поскольку сниффинг в сетях на
коммутаторах подразумевает атаку "man-in-the-middle",
когда прослушивание сети носит "активный"
характер, при котором сетевой трафик
передается атакующему компьютеру и только
потом пересылаться по истинному назначению,
то определение работы "активных"
снифферов является достаточно простой
задачей. Требуется только обнаружить
подозрительный ARP сетевой трафик. Для этих
целей служит специальное программное
обеспечение, такое как, например, LBNL
Arpwatch. Arpwatch определяет как изменения в ARP
схеме локальной сети, вызываемые ARР spoofing,
так и очевидные сетевые аномалии, или
вторичные эффекты от сниффинга.
Обнаружение снифферов в сетях без
коммутаторов.
Определение работы снифферов, которые
разработаны для сетей без коммутаторов,
является более сложной задачей. Это связано
с тем, что работа таких снифферов
происходит преимущественно в пассивном
режиме. Они работают переведя сетевую карту
в специальный promiscuous режим, что позволяет
атакующему компьютеру получать любой
сетевой трафик, достигающий сетевой карты.
Подобно радиоприемнику, снифферы не
порождают обязательного дополнительного и
подозрительного трафика для передачи в
сеть. Однако существуют определенные
технологии, которые могут быть
использованы для определения компьютеров,
чьи сетевые карты работают в специальном
promiscuous режиме, что указывает на вероятный
сниффинг локальной сети. Эти технологии
используют специфичные особенности TCP/IP
стэка.
Одной из таких утилит является L0pht
AntiSniff . Самораспаковывающийся архив as-1021
имеет размер 1299 Кб и включает краткое
руководство пользователя. Утилита Shareware и
работает без регистрации 15 дней.
Естественно, в Интернете легко находится
средство продления работоспособности. В
руководстве пользователя прямо указано
предназначение утилиты: "AntiSniff is a Graphical User
Interface (GUI) driven tool for detecting promiscuous Network Interface Cards (NICs)
on your local network segment." Утилита имеет хорошо
продуманный графический интерфейс. На
вкладке "Network Configuration" задается или
адрес проверяемой машины, или диапазон
адресов, если надо проверить несколько
машин. Существует возможность загрузить
предварительно подготовленный список из
файла. Утилита самостоятельно определяет
допустимые сетевые интерфейсы,
предоставляя возможность выбора. Параметры
"Bogus …" оставь по умолчанию. Эти
реально не существующие MAC и IP адреса
используются при работе утилиты.
Вкладка "Scanner Configuration" позволяет
задать набор тестов, который будет
использован при работе утилиты, а также
предоставляет возможность настроить
расписание, по которому она будет
запускаться. Теперь можно нажать кнопку и
на следующей вкладке "Scan Progress" и
наблюдать за работой утилиты.
Противодействие.
Мало обнаружить работу снифферов в твоей
локальной сети. Посмотрим, что можно им
противопоставить. Выбор невелик – это
административные меры, модификация самого
протокола ARP и шифрование.
Локалка под диктатором.
В организациях предотвратить
использование снифферов гораздо проще.
Можно просто запретить использование
какого-либо программного обеспечения,
кроме явным образом разрешенного
администратором. Думаете утопия? Посмотри
на такие решения, как AppSense
Application Manager, которые разрешают запуск
только одобренного администратором
программного обеспечения. Снифферы и
другие хакерские утилиты будут запрещены
для запуска. Однако, такие решения как AppSense
подходят не ко всем сетям, поскольку, во-первых,
поддерживают только Win компьютеры, а во-вторых,
AppSense не сможет воспрепятствовать
постороннему компьютеру (например,
ноутбуку) подсоединится к сети. Кроме того,
этот способ не приемлем для подключения к
локалке домашних пользователей, в
отношении которых такой диктат неуместен.
Модификация ARP протокола.
gzip -d antidote.diff.gz
и выполните команду
перекомпилируйте ядро и разрешите работу
модифицированного протокола ARP:
sysctl -w net.ipv4.neigh.eth0.arp_antidote=1
Уже вышла вторая
версия патча, в которой добавлена
настройка реакции на атаку.
Единственным решением, не столько
препятствующим сниффингу, сколько делающим
его бессмысленным, является шифрование. В
"dsniff
FAQ" Dug Song советует: "не допускайте
использования фирменных небезопасных
прикладных протоколов или унаследованных
протоколов, передающих данные явным
образом в ваших сетях". Это очень важный
совет.
Замена небезопасных протоколов (таких как
telnet) на их надежные шифрованные аналоги (такие
как ssh) представляется серьезным барьером
от перехвата. Замена всех небезопасных
протоколов в большинстве случаев
маловероятна. Поэтому, вместо прекращения
использования протоколов, передающих
данные явным образом, остается только одна
возможность – шифрование всего сетевого
трафика на 3 уровне, используя Internet Protocol
Security (IPSec) (Taylor, Laura. Understanding
IPSec). Осуществляя шифрование на 3 уровне,
возможно продолжать использовать
небезопасные протоколы, поскольку все
данные будут инкапсулированы IPSec и
зашифрованы при передаче по сети. Таким
образом, унаследованные приложения,
которые используют старые протоколы, не
пострадают. IPSec полностью прозрачен для
приложений и пользователей. Это открытый
стандарт, поддерживаемый многими
компаниями, включая Microsoft и Cisco. Кроме того,
многие реализации Unix поддерживают IPSec.
Легкая настройка IPSec в Win'2k/XP дополнительно
увеличивает его привлекательность.
Синоптики предсказывают, что к 2016 году наступит второй ледниковый период трафик в беспроводных сетях на 10% превзойдёт трафик в проводном Ethernet. При этом от года в год частных точек доступа становится примерно на 20% больше.
При таком тренде не может не радовать то, что 80% владельцев сетей не меняют пароли доступа по умолчанию. В их число входят и сети компаний.
Этим циклом статей я хочу собрать воедино описания существующих технологии защит, их проблемы и способы обхода, таким образом, что в конце читатель сам сможет сказать, как сделать свою сеть непробиваемой, и даже наглядно продемонстрировать проблемы на примере незадачливого соседа (do not try this at home, kids). Практическая сторона взлома будет освещена с помощью Kali Linux (бывший Backtrack 5) в следующих частях.
Статья по мере написания выросла с 5 страниц до 40, поэтому я решил разбить её на части. Этот цикл — не просто инструкция, как нужно и не нужно делать, а подробное объяснение причин для этого. Ну, а кто хочет инструкций — они такие:
Используйте WPA2-PSK-CCMP с паролем от 12 символов a-z (2000+ лет перебора на ATI-кластере). Измените имя сети по умолчанию на нечто уникальное (защита от rainbow-таблиц). Отключите WPS (достаточно перебрать 10000 комбинаций PIN). Не полагайтесь на MAC-фильтрацию и скрытие SSID.
Передайте мне сахар
Представьте, что вы — устройство, которое принимает инструкции. К вам может подключиться каждый желающий и отдать любую команду. Всё хорошо, но на каком-то этапе потребовалось фильтровать личностей, которые могут вами управлять. Вот здесь и начинается самое интересное.
Как понять, кто может отдать команду, а кто нет? Первое, что приходит в голову — по паролю. Пусть каждый клиент перед тем, как передать новую команду, передаст некий пароль. Таким образом, вы будете выполнять только команды, которые сопровождались корректным паролем. Остальные — фтопку.
После успешной авторизации браузер просто-напросто будет передавать определённый заголовок при каждом запросе в закрытую зону:
То есть исходное:
У данного подхода есть один большой недостаток — так как пароль (или логин-пароль, что по сути просто две части того же пароля) передаётся по каналу «как есть» — кто угодно может встрять между вами и клиентом и получить ваш пароль на блюдечке. А затем использовать его и распоряжаться вами, как угодно!
Для предотвращения подобного безобразия можно прибегнуть к хитрости: использовать какой-либо двухсторонний алгоритм шифрования, где закрытым ключом будет как раз наш пароль, и явно его никогда не передавать. Однако проблемы это не решит — достаточно один раз узнать пароль и можно будет расшифровать любые данные, переданные в прошлом и будущем, плюс шифровать собственные и успешно маскироваться под клиента. А учитывая то, что пароль предназначен для человека, а люди склонны использовать далеко не весь набор из 256 байт в каждом символе, да и символов этих обычно около 6-8… в общем, комсомол не одобрит.
Что делать? А поступим так, как поступают настоящие конспираторы: при первом контакте придумаем длинную случайную строку (достаточно длинную, чтобы её нельзя было подобрать, пока светит это солнце), запомним её и все дальнейшие передаваемые данные будем шифровать с использованием этого «псевдонима» для настоящего пароля. А ещё периодически менять эту строку — тогда джедаи вообще не пройдут.
Первые две передачи (зелёные иконки на рисунке выше) — это фаза с «пожатием рук» (handshake), когда сначала мы говорим серверу о нашей легитимности, показывая правильный пароль, на что сервер нам отвечает случайной строкой, которую мы затем используем для шифрования и передачи любых данных.
Итак, для подбора ключа хакеру нужно будет либо найти уязвимость в алгоритме его генерации (как в случае с Dual_EC_DRBG), либо арендовать сотню-другую параллельных вселенных и несколько тысяч ATI-ферм для решения этой задачи при своей жизни. Всё это благодаря тому, что случайный ключ может быть любой длины и содержать любые коды из доступных 256, потому что пользователю-человеку никогда не придётся с ним работать.
Именно такая схема с временным ключом (сеансовый ключ, session key или ticket) в разных вариациях и используется сегодня во многих системах — в том числе SSL/TLS и стандартах защиты беспроводных сетей, о которых будет идти речь.
План атаки
Наша задача при взломе любой передачи так или иначе сводится к перехвату рукопожатия, из которого можно будет либо вытащить временный ключ, либо исходный пароль, либо и то, и другое. В целом, это довольно долгое занятие и требует определённой удачи.
Но это в идеальном мире…
Механизмы защиты Wi-Fi
Технологии создаются людьми и почти во всех из них есть ошибки, иногда достаточно критические, чтобы обойти любую самую хорошую в теории защиту. Ниже мы пробежимся по списку существующих механизмов защиты передачи данных по радиоканалу (то есть не затрагивая SSL, VPN и другие более высокоуровневые способы).
OPEN — это отсутствие всякой защиты. Точка доступа и клиент никак не маскируют передачу данных. Почти любой беспроводной адаптер в любом ноутбуке с Linux может быть установлен в режим прослушки, когда вместо отбрасывания пакетов, предназначенных не ему, он будет их фиксировать и передавать в ОС, где их можно спокойно просматривать. Кто у нас там полез в Твиттер?
Именно по такому принципу работают проводные сети — в них нет встроенной защиты и «врезавшись» в неё или просто подключившись к хабу/свичу сетевой адаптер будет получать пакеты всех находящихся в этом сегменте сети устройств в открытом виде. Однако с беспроводной сетью «врезаться» можно из любого места — 10-20-50 метров и больше, причём расстояние зависит не только от мощности вашего передатчика, но и от длины антенны хакера. Поэтому открытая передача данных по беспроводной сети гораздо более опасна.
WEP — первый стандарт защиты Wi-Fi. Расшифровывается как Wired Equivalent Privacy («эквивалент защиты проводных сетей»), но на деле он даёт намного меньше защиты, чем эти самые проводные сети, так как имеет множество огрехов и взламывается множеством разных способов, что из-за расстояния, покрываемого передатчиком, делает данные более уязвимыми. Его нужно избегать почти так же, как и открытых сетей — безопасность он обеспечивает только на короткое время, спустя которое любую передачу можно полностью раскрыть вне зависимости от сложности пароля. Ситуация усугубляется тем, что пароли в WEP — это либо 40, либо 104 бита, что есть крайне короткая комбинация и подобрать её можно за секунды (это без учёта ошибок в самом шифровании).
WEP был придуман в конце 90-х, что его оправдывает, а вот тех, кто им до сих пор пользуется — нет. Я до сих пор на 10-20 WPA-сетей стабильно нахожу хотя бы одну WEP-сеть.
На практике существовало несколько алгоритмов шифровки передаваемых данных — Neesus, MD5, Apple — но все они так или иначе небезопасны. Особенно примечателен первый, эффективная длина которого — 21 бит (~5 символов).
Основная проблема WEP — в фундаментальной ошибке проектирования. Как было проиллюстрировано в начале — шифрование потока делается с помощью временного ключа. WEP фактически передаёт несколько байт этого самого ключа вместе с каждым пакетом данных. Таким образом, вне зависимости от сложности ключа раскрыть любую передачу можно просто имея достаточное число перехваченных пакетов (несколько десятков тысяч, что довольно мало для активно использующейся сети).
К слову, в 2004 IEEE объявили WEP устаревшим из-за того, что стандарт «не выполнил поставленные перед собой цели [обеспечения безопасности беспроводных сетей]».
Про атаки на WEP будет сказано в третьей части. Скорее всего в этом цикле про WEP не будет, так как статьи и так получились очень большие, а распространённость WEP стабильно снижается. Кому надо — легко может найти руководства на других ресурсах.
WPA и WPA2
WPA — второе поколение, пришедшее на смену WEP. Расшифровывается как Wi-Fi Protected Access. Качественно иной уровень защиты благодаря принятию во внимание ошибок WEP. Длина пароля — произвольная, от 8 до 63 байт, что сильно затрудняет его подбор (сравните с 3, 6 и 15 байтами в WEP).
Стандарт поддерживает различные алгоритмы шифрования передаваемых данных после рукопожатия: TKIP и CCMP. Первый — нечто вроде мостика между WEP и WPA, который был придуман на то время, пока IEEE были заняты созданием полноценного алгоритма CCMP. TKIP так же, как и WEP, страдает от некоторых типов атак, и в целом не безопасен. Сейчас используется редко (хотя почему вообще ещё применяется — мне не понятно) и в целом использование WPA с TKIP почти то же, что и использование простого WEP.
Одна из занятных особенностей TKIP — в возможности так называемой Michael-атаки. Для быстрого залатывания некоторых особо критичных дыр в WEP в TKIP было введено правило, что точка доступа обязана блокировать все коммуникации через себя (то есть «засыпать») на 60 секунд, если обнаруживается атака на подбор ключа (описана во второй части). Michael-атака — простая передача «испорченных» пакетов для полного отключения всей сети. Причём в отличии от обычного DDoS тут достаточно всего двух (двух) пакетов для гарантированного выведения сети из строя на одну минуту.
WPA отличается от WEP и тем, что шифрует данные каждого клиента по отдельности. После рукопожатия генерируется временный ключ — PTK — который используется для кодирования передачи этого клиента, но никакого другого. Поэтому даже если вы проникли в сеть, то прочитать пакеты других клиентов вы сможете только, когда перехватите их рукопожатия — каждого по отдельности. Демонстрация этого с помощью Wireshark будет в третьей части.
Кроме разных алгоритмов шифрования, WPA(2) поддерживают два разных режима начальной аутентификации (проверки пароля для доступа клиента к сети) — PSK и Enterprise. PSK (иногда его называют WPA Personal) — вход по единому паролю, который вводит клиент при подключении. Это просто и удобно, но в случае больших компаний может быть проблемой — допустим, у вас ушёл сотрудник и чтобы он не мог больше получить доступ к сети приходится применять способ из «Людей в чёрном» менять пароль для всей сети и уведомлять об этом других сотрудников. Enterprise снимает эту проблему благодаря наличию множества ключей, хранящихся на отдельном сервере — RADIUS. Кроме того, Enterprise стандартизирует сам процесс аутентификации в протоколе EAP (Extensible Authentication Protocol), что позволяет написать собственный велосипед алгоритм. Короче, одни плюшки для больших дядей.
В этом цикле будет подробно разобрана атака на WPA(2)-PSK, так как Enterprise — это совсем другая история, так как используется только в больших компаниях.
WPS/QSS
WPS, он же Qikk aSS QSS — интересная технология, которая позволяет нам вообще не думать о пароле, а просто добавить воды нажать на кнопку и тут же подключиться к сети. По сути это «легальный» метод обхода защиты по паролю вообще, но удивительно то, что он получил широкое распространение при очень серьёзном просчёте в самой системе допуска — это спустя годы после печального опыта с WEP.
Учитывая, что это взаимодействие происходит до любых проверок безопасности, в секунду можно отправлять по 10-50 запросов на вход через WPS, и через 3-15 часов (иногда больше, иногда меньше) вы получите ключи от рая.
Когда данная уязвимость была раскрыта производители стали внедрять ограничение на число попыток входа (rate limit), после превышения которого точка доступа автоматически на какое-то время отключает WPS — однако до сих пор таких устройств не больше половины от уже выпущенных без этой защиты. Даже больше — временное отключение кардинально ничего не меняет, так как при одной попытке входа в минуту нам понадобится всего 10000/60/24 = 6,94 дней. А PIN обычно отыскивается раньше, чем проходится весь цикл.
Хочу ещё раз обратить ваше внимание, что при включенном WPS ваш пароль будет неминуемо раскрыт вне зависимости от своей сложности. Поэтому если вам вообще нужен WPS — включайте его только когда производится подключение к сети, а в остальное время держите этот бекдор выключенным.
Атака на WPS будет рассмотрена во второй части.
p.s: так как тема очень обширная, в материал могли закрасться ошибки и неточности. Вместо криков «автор ничего не понимает» лучше использовать комментарии и ЛС. Это будет только приветствоваться.
Эта статья о том, как стать кулхацкером (или по-английски Script Kiddie) — условным злоумышленником, который испытывает недостаток знаний в области программирования и использует существующее программное обеспечение, чтобы провести атаку на смартфоны и планшеты своих одноклассников.
Шучу. На самом деле передо мной стояла задача понять две вещи:
Как защищаемся
Рассмотренные атаки можно предотвратить, если использовать следующие меры защиты:
Атака | Мера |
---|---|
Подключение клиентов к ложной точке доступа | мониторинг эфира для выявления фейковых точек доступа; аутентификация пользователей с использованием клиентских сертификатов |
Принудительная деаутентификация клиента | мониторинг эфира для выявления попыток принудительной деаутентификации клиентов беспроводных сетей; активация 802.11w (Protected Management Frames, PMF) на контроллере |
Далее расскажем, как реализован каждый из способов защиты в нашем случае.
Мониторинг эфира и выявление ложных точек доступа. Организовать мониторинг эфира можно с помощью штатных средств точек доступа и контроллера WLAN. Далее речь пойдет об устройствах Cisco.
Для этого на точках доступа активируется механизм Off Channel Scanning, в котором он периодически сканирует эфир по всем каналам. В результате такого мониторинга он выявляет наименее загруженный канал и сторонние точки доступа (в терминологии Cisco – Rogue AP). Данные с точек доступа отправляются на контроллер, к которому они подключены.
На самом контроллере настраивается правило классификации сторонних точек доступа, согласно которому все посторонние точки доступа с SSID, эквивалентным нашему, считаются нелегитимными (malicious в терминологии Cisco). Подробно о настройке контроллера Cisco можете почитать в этой серии статей.
- МАС-адрес нелегитимной точки доступа;
- МАС-адрес точки доступа, которая ее обнаружила.
С помощью таблицы соответствия MAC-адреса точки доступа и ее месторасположения можно определить примерное расположение нелегитимной точки доступа.
Мониторинг эфира на предмет попыток принудительной деаутентификации беспроводных клиентов. В рамках системы обнаружения вторжений (intrusion detection system, IDS) у контроллера Cisco есть штатный набор стандартных сигнатур, с помощью которых он может распознавать потенциально опасное поведение клиентов и соседских точек доступа. Сюда как раз относятся множественные попытки деаутентификации, аутентификации, ассоциации и пр.
Рассматриваемый контроллер также имеет механизмы предотвращения вторжений (IPS). Например, при выявлении нелегитимной точки доступа можно противодействовать вторжению теми же средствами, которые используются и при атаках, – деаутентификацией и деассоциацией. Контроллер можно настроить так, что при появлении точки доступа с SSID, совпадающим с анонсируемым контроллером, будет запускаться механизм auto contain: точки доступа, фиксирующие сигнал нелегитимной точки доступа, начинают отправлять клиентам кадры деаутентификации от имени этой точки доступа. В результате клиенту становится очень сложно работать и передавать данные нелегитимной точке доступа.
Настройка автоматической деаутентификации клиентов, подключившихся к нелегитимной точке доступа, на контроллере Cisco.
Получать информацию от контроллера о событиях IDS можно двумя способами: отправка SNMP-трапов в систему мониторинга или парсинг журнала контроллера.
Для защиты от принудительной деаутентификации на контроллере активируется 802.11w (Protected Management Frames, PMF). Этот режим предотвращает атаки, направленные на принудительное отключение клиента от легитимной точки доступа и переподключение к нелегитимной. При использовании 802.11w фреймы Disassociation, Reassociation, Deauthentication подписываются ключом, известным только авторизованным клиентам и легитимным точкам доступа. В результате клиент может определить, получен данный фрейм от легитимной точки или нет.
Активация 802.11w PMF в веб-интерфейсе контроллера Cisco.
Аутентификация по пользовательским сертификатам. Суть метода заключается в том, что клиент аутентифицируется по пользовательскому сертификату, выписанному доверенным удостоверяющим центром. Этот сертификат помещается в пользовательского хранилище сертификатов каждого беспроводного устройства. При подключении сервер аутентификации (AAA-сервер) сверяет сертификат, предъявленный устройством, с установленными политиками.
Проникнуть в сеть с аутентификацией под клиентским сертификатом злоумышленник сможет, только украв устройство с сертификатом и имея логин/пароль для входа на устройство. Но и здесь лазейка быстро закрывается: когда о краже станет известно, сертификат можно быстро отозвать в удостоверяющем центре. Сервер аутентификации оповещается о том, что сертификат отозван, соответственно злоумышленник не сможет с помощью сертификата подключиться к целевой сети.
Ниже схема того, как беспроводная сеть WPA2-Enterprise c аутентификацией по пользовательским сертификатам реализована у нас.
Рассмотрим подробнее следующие составляющие этой схемы.
RADIUS-сервер. Принимает запросы от устройств на подключение беспроводных устройств (radius-clients).
Network Policy Server, NPS. Выполняет аутентификацию и проверку подлинности. Здесь же настраиваются условия подключения к беспроводной сети. Например:
- запрос сертификата;
- издатель сертификата;
- расписание подключения.
Доменный сервер Active Directory (AD DS). Содержит базу с учетными записями пользователей и групп пользователей. Чтобы NPS мог получать данные о пользователях, необходимо зарегистрировать NPS на AD DS.
Active Directory Certificate services. Инфраструктура открытых ключей (Public Key Infrastructure, PKI).
Root-сервер. Корневой удостоверяющий центр. Здесь на основе закрытого ключа генерируется сертификат удостоверяющего центра. С помощью этого сертификата подписывается сертификат для промежуточного удостоверяющего центра.
Обычно этот сертификат вместе с ключом экспортируют на флешку, прячут в подвал, в сейф, чтобы к нему не было никакого физического доступа для посторонних. Сам сервер отключают.
Схема с subordinate-сервером выгодна тем, что при компрометации промежуточного сертификата корневой сертификат никак не будет затронут. В этом случае скомпрометированный сертификат просто отзывается через root-сервер, а subordinate-сервер удаляется.
Шаг 4. Сниффинг Wi-Fi в «неразборчивом» режиме
Далее переключаем внимание на беспроводную карту. Вначале, как и в предыдущем шаге, узнаем имя карты:
Всего за несколько секунд прослушивания трафика я узнал об операционной системе, отправляющей запрос, запрашиваемый сайт и даже ответ от сайта, закодированный в HTML. Я даже могу видеть поисковую систему, используемую по умолчанию, для выполнения этого запроса.
Шаг 3. Сниффинг сетевого интерфейса
Приступаем к прослушиванию сетевого интерфейса. Вначале находим имена сетевых карт:
Затем запускаем Sniffglue для сниффинга пакетов на нужном интерфейсе:
В результате прослушивания Ethernet-карты (enp2s0) видные DNS-запросы к сайту Null Byte. Если бы мы подключились к LAN tap или Hak5 Packet Squirrel, то легко могли бы считать любой незашифрованный трафик, проходящий через кабель, к которому у нас есть доступ.
Заключение
Благодаря песочнице, используемой в Sniffglue, вы можете изучать сетевую активность и не беспокоиться о потенциальных эксплоитах запущенных от имени суперпользователя, которые могут скомпрометировать вашу систему. Эта утилита очень подходит для пассивной разведки через SSH с выделением только полезной информации. Поскольку Sniffglue, в отличие от многих активных сканеров, не оставляет следов внутри сети, вы можете работать с этой утилитой где угодно без боязни оказаться обнаруженным.
Надеюсь, это руководство, посвященное безопасному сниффингу пакетов, вам понравилось.
Один хакер может причинить столько же вреда, сколько 10 000 солдат! Подпишись на наш Телеграм канал, чтобы узнать первым, как выжить в цифровом кошмаре!
Не так давно совместно с Digital Security мы провели пентест своей корпоративной wi-fi-сети. Сегодня с коллегами расскажем, что может угрожать беспроводной сети, построенной на базе WPA2-Enterprise с аутентификацией по доменному аккаунту, и как от этого защититься.
Отправная точка
Сразу скажу, что хотя часть моих опытов проводил в настоящих публичных сетях, “неправомерный доступ” я получал только к браузерам своих собственных устройств. Поэтому фактически Главу 28 УК РФ я не нарушал, и Вам настоятельно нарушать не советую. Данный эксперимент и статья предлагаются к ознакомлению исключительно в целях демонстрации небезопасности использования публичных беспроводных сетей.
Шаг 2. Запуск Cargo
Теперь мы можем либо добавить Sniffglue в список путей или просто зайти в директорию, куда было установлено это приложение, и запустить напрямую. После запуска мы должны получить перечень команд с описанием, что свидетельствует об присутствии и готовности к запуску Sniffglue
Железо
В качестве инструментария для эксперимента я использовал следующий инструментарий:
- Любая публичная WiFi сеть на фудкорте
- Нетбук Acer Aspire one D270
- Встроенная wifi карта Atheros AR5B125
- Внешний wifi usb адаптер WiFi TP-LINK Archer T4U v3
- Внешний wifi usb адаптер TP-LINK Archer T9UH v2
- Kali Linux c версией ядра 5.8.0-kali2-amd64
- Фреймворк Bettercap v2.28
- Фреймворк BeEF 0.5
- Несколько смартфонов и планшетов на Android 9 и ноутбук на Windows 7 в качестве устройств-жертв.
У встроенной карты Atheros AR9485 была великолепная поддержка всех режимов и драйвер “из коробки” в Kali, но невозможность управлять мощностью сигнала и слабая антенна сводили на нет эффективность данной карты на фазе активного вмешательства в трафик.
У WiFi TP-LINK Archer T4U v3 не было драйвера из коробки, а тот который я нашел на Github, не имел поддержки режима точки доступа (AP) и его нужно было компилировать самостоятельно.
Карточка TP-LINK Archer T9UH v2 заработала идеально с драйвером из коробки, на ней то у меня все и получилось.
Первым делом я установил Kali Linux 5.8.0 на свой ноутбук. Единственный SSD в ноутбуке был пустым и предназначался целиком для эксперимента, что избавило меня от некоторых трудностей с разбивкой разделов и резервным копированием старых данных с него, поэтому при установке я использовал все варианты “по умолчанию”. Я все же столкнулся некоторыми тривиальными проблемами вроде потери монтирования флешки с дистрибутивом в процессе установки и обновления системы до последней актуальной версии из репозитория.
Затем нужно было запустить инструменты проникновения, ими будут Bettercap и BeEF. С их помощью мы принудим браузеры “жертв” отказаться от шифрования трафика и внедрим в просматриваемые сайты троянский JavaScript.
Bettercap — это полный, модульный, портативный и легко расширяемый инструмент и фреймворк с диагностическими и наступательными функциями всех видов, которые могут понадобиться для выполнения атаки “человек посередине”. Bettercap написан на Go, основная разработка проекта проходила до 2019 года, сейчас происходят лишь небольшие исправления. Однако, как мы увидим позднее этот инструмент в быстро меняющемся мире информационной безопасности сохраняет свою актуальность и на закате 2020 года. Bettercap поставляется со встроенным модулями arp spoof и sslstrip. Именно Bettercap должен перехватывать трафик и внедрять в него вредоносную нагрузку.
BeEF — это фреймворк, позволяющий централизованно управлять пулом зараженных через XSS-атаку (сross-site scripting) клиентов, отдавать им команды и получать результат. “Злоумышленник” внедряет на уязвимый сайт скрипт hook.js. Скрипт hook.js из браузера “жертвы” сигналит управляющему центру на компьютере “злоумышленника” (BeEF) о том, что новый клиент онлайн. “Злоумышленник” входит в панель управления BeEF и удаленно управляет зараженными браузерами.
Я использовал версии Bettercap v2.28 и BeEF 0.5 Они оба уже есть в составе Kali Linux 5.8.0
Открываем окно командной строки и вводим команду
Стартует первая часть нашего зловредного бутерброда — фреймворк BeEF.
Оставляем вкладку с BeEF открытой, мы в нее вернемся позже.
Перейдем к второй части бутерброда — Bettercap. Тут был подводный камень — Bettercap, уже имевшийся в системе, отказывался стартовать сервисом и выдавал другие непонятные мне ошибки. Поэтому я его решил удалить и поставить заново вручную. Открываем окно командной строки и выполняем команды:
Затем скачиваем браузером бинарную версию Bettercap v2.28 в архиве в папку загрузки. Обратите внимание, что я выбрал версию для своей архитектуры ядра.
Теперь распаковываем и размещаем исполняемый файл в системе Bettercap в папку, предназначенную для ручной установки.
Самый простой способ начать работу с Bettercap — использовать его официальный веб-интерфейс пользователя. Веб-интерфейс работает одновременно с сервисом rest API и интерактивной сессией командной строки. Чтобы установить веб-интерфейс нужно выполнить команду:
Внимание! Уже на этом этапе нужно обязательно подключиться к атакуемой беспроводной сети, получить ip-адрес для беспроводного интерфейса атакующей машины и запомнить его (команда ifconfig поможет его узнать).
Теперь можно открыть в браузере еще одну вкладку с адресом 127.0.0.1 (без номера порта!) и войти в систему, используя учетные данные, которые были подсмотрены или настроены на предыдущем шаге (обычно это user/pass).
Веб-интерфейс Bettercap полностью дублирует командную строку, поэтому все действия которые мы будем делать из командной строки, можно сделать и из веб-интерфейса (запуск модулей, смена режимов, просмотр изменение значение переменных, вывод диагностической информации)
Продолжаем в командной строке и проведём первоначальную разведку беспроводной сети, к которой мы уже подключены в качестве обычного клиента.
net.recon on — Запускает обнаружение сетевых хостов.
net.probe on — Запускает активное зондирование новых хостов в сети через отправку фиктивных пакетов каждому возможному IP в подсети.
net.show — Даёт команду отобразить список кэша обнаруженных хостов.
net.probe off — Выключает модуль активного зондирования.
Настраиваем переменные Bettercap, чтобы он:
Затем запускаем атаку против пользователей беспроводной сети:
Команды
А на машине “злоумышленника” в контрольной панели фреймворка BeEF, в разделе Online Browsers тем временем появится запись о новом браузере, пойманном на крючок. Выбираем этот браузер мышью, переходим в суб-вкладку Commands, на каталог Browsers, потом последовательно Hooked domain → Get Cookie → Execute
Что понадобится
Для работы с Sniffglue нужно установить Rust, поскольку программа написана на этом языке программирования. Рекомендую использовать Kali, Ubuntu или другую систему на базе Debian или Arch Linux. Я попробовал запускать Sniffglue в macOS, но столкнулся с трудностями. Вполне вероятно, что Rust у вас уже установлен, поскольку этот язык программирования предустановлен во многих системах.
Например, в системе со свежим дистрибутивом Kali Linux.
Кроме того, нужно установить библиотеки libseccomp-dev и libpcap-dev, предназначенные для модуля безопасных вычислений и парсинга pcap соответственно.
Шаг 1. Загрузка и установка Sniffglue
Загрузка и запуск Sniffglue осуществляется при помощи менеджера пакетов Cargo (схожим образом Pip предназначен для Python), который появляется по умолчанию после установки Rust. После обновления системы проверьте, установлен ли Cargo, выполнив команду apt install cargo. Должны скомпилироваться множество других пакетов. Затем выполните команду cargo install sniffglue для установки Sniffglue при помощи этого менеджера пакетов или проверьте, установлен Snifglue, что должно произойти после установки Cargo.
От чего защищаемся
Врага надо знать в лицо, поэтому ниже кратко пройдемся по механике возможных атак против сети WPA2-Enterprise с аутентификацией по доменным аккаунтам.
Подключение клиентов к ложной точке доступа. Зная имя сети SSID (ESSID, если сеть построена на нескольких точках доступа) и MAC-адрес точки доступа (BSSID), злоумышленник может развернуть нелегитимную точку доступа.
Чтобы увеличить свои шансы на успех, злоумышленники используют следующие нехитрые приемы:
- нелегитимная точка доступа обладает более мощным сигналом, чем легитимная;
- нелегитимная точка доступа развернута там, куда не доходит сигнал легитимных точек доступа, но где есть клиенты, которые обычно подключаются к этой сети.
Чтобы было куда подключить эту точку доступа, злоумышленник разворачивает свой RADIUS-сервер, к которому будет подключаться нелегетимная точка доступа. У этого RADIUS-сервера нет задачи аутентифицировать клиента и проверить, указал ли он правильный пароль. Главное – получить от клиента авторизационные данные, логин и ответ на предоставленный ложным Radius-сервером challenge. Их злоумышленник будет использовать для оффлайн подбора пароля и последующего подключения к целевой корпоративной беспроводной сети.
Без мониторинга эфира обнаружить местонахождение нелегитимной точки доступа не всегда просто. Злоумышленник вряд ли будет выглядеть, как человек с огромным рюкзаком, кучей антенн и дизель-генератором на тележке.
Например, для своих пентестов коллеги из Digital Security используют портативный бытовой роутер со встроенной батарейкой (типа этого). Перепрошивают с помощью OpenWRT и устанавливают кастомный пакет. На выходе получается точка доступа со встроенным RADIUS-сервером, которая может при необходимости прослушивать эфир и собирать данные. При желании можно и вовсе воспользоваться обычным телефоном.
Места размещения таких точек доступа ограничиваются только изобретательностью взломщика. Если офис жертвы находится в бизнес-центре, то можно развернуть точку доступа в фойе до турникетов или лобби с диванчиками. Удобно разместить такую точку доступа в кабине лифта: она с большой скоростью удаляется от легитимных точек доступа, поэтому клиентское устройство оказывается в ловушке и с большой вероятностью подключится к ложной точке доступа. Злоумышленник может даже кататься с ложной точкой доступа на корпоративном транспорте, который развозит сотрудников до метро после работы.
В результате клиент отключается от точки доступа и начинает искать новую точку доступа с таким же ESSID. В этой ситуации как раз пригождается точка доступа с более мощным сигналом. Клиентское устройство пытается к ней подключиться. Если клиент пройдет аутентификацию на ложном RADIUS-сервере, злоумышленник может захватить имя пользователя и аутентификационную MSCHAPv2-сессию.
Выводы
Выводы по результатам эксперимента неутешительные. Браузеры еще не могут на 100% защитить пользователей от вмешательства в трафик или подмены настоящего сайта фишинговым. Механизм HSTS срабатывает только для пары тысяч самых популярных сайтов и оставляет без надежной защиты миллионы других. Браузеры недостадочно явно предупреждают о том, что соединение с сервером не зашифровано. Еще хуже дело обстоит в беспроводных сетях, где доступ к среде передачи данных есть у любого желающего, при этом почти никто из пользователей вообще никак не проверяет подлинность самой точки доступа, а надежных методов проверки подлинности точек доступа просто не существует.
Сниффинг сетевых пакетов – один из способов сбора информации о целевой системе без лишних телодвижений.
Сниффинг сетевых пакетов – один из способов сбора информации о целевой системе без лишних телодвижений. Однако этот метод несет в себе риски, если прослушивание происходит в неизвестной сети, поскольку полезная нагрузка внутри перехватываемых пакетов может выполниться в вашей системе. Песочницы, используемые утилитой Sniffglue, как раз позволяют обеспечить дополнительный уровень безопасности.
Пассивное прослушивание является скрытным, эффективным и, как правило, используется на начальной стадии хакерами и пентестерами, собирающими информацию о целевой сети. Однако если вы когда-либо запускали Wireshark от имени суперпользователя, то вероятно сталкивались с предупреждением, поскольку в этом случае ваша система подвергается риску. Запуск программы от имени суперпользователя и последующее компрометирование при помощи уязвимости нулевого дня – реальная угроза, которая существует во время перехвата случайного трафика. Цитата из документации на Wireshark:
«Очень небезопасно запускать Wireshark подобным образом, поскольку все возможные эксплоиты, заточенные под Wireshark, также будут запускаться от имени администратора, и ваша система может оказаться полностью скомпрометированной».
Соответственно, если какой-либо эксплоит под Wireshark уже разработан и известен узкому кругу лиц, то может быть запущен на вашем компьютере от имени суперпользователя в случае, если для Wireshark доступны эти привилегии. Поскольку мы часто сталкиваемся с неопределенностью, при получении разнообразной информации, важно предпринять шаги для минимизации ущерба и возможных неблагоприятных последствий.
Наилучший способ избежать эксплоитов нулевого дня - настроить юзера с правами на использование сетевого адаптера, но без привилегий суперпользователя. Однако вначале при решении этой задачи могут возникнуть некоторые сложности.
Для всех, кто занимается снифффингом пакетов, будет интересно узнать, что в Sniffglue эти функции безопасности используются по умолчанию. Эта утилита является средством пассивной разведки, позволяющая прослушивать трафик в сети без риска оказаться обнаруженным. В отличие от ARP-scan и других утилит, использующих активное сканирование, Sniffglue пассивно слушает без каких-либо действий по генерации трафика, позволяющих раскрыть ваше присутствие.
Один из ключевых методов для реализации безопасного сканирования – песочница, которая встроена внутрь Sniffglue. Само по себе приложение не делает ничего лишнего и, соответственно, оберегает себя от эксплоитов. Sniffglue написан на языке Rust, оптимизирован для использования всех доступных ресурсов процессора во время обработки пакетов, наделен дополнительными мерами безопасности и вполне заслуживает внимания.
Про WPA2-Enterprise
Прежде чем рассказывать про атаки и способы защиты от них, вспомним основные особенности стандарта WPA2-Enterprise.
Аутентификация. Для того чтобы подключиться к сети, клиент должен аутентифицироваться на ААА-сервере. Часто в качестве такового выступает RADIUS-сервер. Аутентификацию можно пройти с помощью доменного пароля, клиентского сертификата и пр. (EAP).
Шифрование. Организовано по алгоритму AES. Ключ шифрования динамический, индивидуальный для каждого клиента (802.1X), генерируется в момент аутентификации на RADIUS-сервере. Этот ключ может периодически обновляться по ходу работы без разрыва соединения.
Схема работы WPA2-Enterprise.
Процесс подключения клиента к беспроводной сети кратко можно описать так.
При подключении данные клиента передаются на точку доступа/контроллер при участии протокола 802.1x. Далее информация отправляется на RADIUS-сервер, где происходит аутентификация клиента: RADIUS-сервер проверяет, есть ли в его списках такой клиент с указанным логином и паролем и можно ли его подключать.
После успешной аутентификации точка доступа подключает клиента в сеть.
Рассмотрим подробнее процесс аутентификации на RADIUS-сервере:
- Клиент, желающий пройти аутентификацию, дает запрос на начало сеанса связи.
- В ответ на это вызываемая сторона (RADIUS-сервер) посылает произвольную, но всякий раз разную информацию (challenge) клиенту.
- Клиент добавляет к полученному запросу пароль и от этой строки вычисляет хэш.
- RADIUS-cервер проделывает с отправленным значением аналогичные действия и сравнивает результат. Если значения хэшей совпадают, то аутентификация считается успешной.
Периодически RADIUS-сервер отправляет клиенту новый challenge, и процедура аутентификации повторяется снова.
Такой механизм аутентификации называется “challenge–response” и происходит по одному из протоколов EAP – PEAP-MSCHAPv2.
Читайте также: