- PVSM.RU - https://www.pvsm.ru -
Перехватить конфиденциальную информацию? Получить несанкционированный доступ к различным приложениям и системам? Нарушить нормальный режим работы? Все это и многое другое выполняют атаки типа Man in the Middle.

Сегодня мы начинаем цикл статей, посвященный атакам «человек посередине» (и ряду сопутствующих) на типичные протоколы и каналы передачи, встречающиеся практически в любой компании. Для начала рассмотрим базовые уровни: физический и канальный.
Заинтересовались? Добро пожаловать под кат.
Man in the Middle (она же атака «человек посередине», она же «атака посредника») в общем случае – это вид атак, направленных на нарушение конфиденциальности и, в некоторых случаях, целостности информации. Схематично описать «типичную» атаку можно следующим образом:

Главным на рисунке являются линии как оранжевая, так и красные. Оранжевая – предполагаемый путь данных, красные – фактический. Среда передачи или протокол в данном случае неважны. Алиса может быть, к примеру, Wi-Fi-клиентом, а Боб – Wi-Fi точкой доступа. Так или иначе всегда есть третья сторона, которая осуществляет какие-либо действия с передаваемой информацией.
Почему мы упустили канал передачи? Потому что такой атаке подвержены в той или иной мере все уровни сетевой модели OSI. Дальше мы это подтвердим.
Приступим к рассмотрению атаки с первого и второго уровня OSI – физического и канального.
Медь
Начнём с самого простого – съем данных с витой пары. Это не совсем MitM, это классический sniffing, но в данном случае это – «предпосылка» к более серьезным атакам. На самом деле, чтобы снять данные с витой пары, скажем, 100Base-T, достаточно иметь просто лишний роутер, на который можно установить какой-нибудь DD-WRT/OpenWRT или любой другой аналог. Некоторое время назад о подобном уже упоминалось здесь [1].
Более надежный способ — использование специальных устройств. Но у него есть недостатки:
Все ведет к тому, что подобный sniffing может не принести желаемых результатов злоумышленнику. Потребуется более «гибкое» подключение, то есть «встраивание» в линию передачи данных. Например, вот так, немного нагло:

У данного способа много недостатков. Например, его легко детектировать при наличии различных средств защиты или же недоверчивых глаз, с подозрением относящихся к появлению чего-то нового на рабочем месте. Но есть у него и преимущество: полный контроль и возможность модификации передаваемых данных. Смоделируем атаку в реальной жизни. Потребуется 2 вещи: моя рабочая машинка, на которой пишется данный текст, мой ноутбук с Arch [3]на борту, хотя должен подойти любой Linux-дистрибутив. Соединения «моя рабочая машинка» –«ноутбук» и «ноутбук» – «локальная сеть» будут выполняться по кабелю, для чего к ноутбуку подключен USB-сетевой адаптер. Для настройки бриджа воспользуемся brctl [4], хотя такой функционал заявлен даже у NetworkManager [5].
Настроим бридж:
# brctl addbr br0 // вместо br0 можем ввести любое удобное наименование
# brctl addif br0 enp14s0 // здесь enp14s0 – мой внешний интерфейс, у вас, скорее всего, он будет называться иначе
# brctl addif br0 enp0s20u4 // enp0s20u4 – интерфейс для подключения рабочего компьютера
Если вы при этом хотите получить IP-адрес, достаточно натравить какой-либо dhclient [6] на br0, либо же «руками» установить статический IP (# ip ad add X.X.X.X/X dev br0).
Итак, на ноутбуке создан bridge-интерфейс, к USB-интерфейсу подключен компьютер, основной интерфейс идет в локальную сеть. Запускаем любое ПО для перехвата трафика (для удобства воспользуюсь Wireshark [7] с GUI) и наблюдаем следующее:

Рисунок 1. Wireshark в деле
Как видим, здесь весь дамп трафика машины с адресом 192.168.139.206 (для тестов я создал тестовую сеть). В текущей конфигурации (без MAC-pinning [8], например) никто вообще не заметит моего присутствия в сети. Данная атака позволяет получить очень много информации, включая логины/пароли, например, для сайта diary.ru [9]:

Рисунок 2. Ooops
На деле же все чуточку сложнее. diary.ru [9] – один из редких сайтов, не перенаправляющих пользователя на шифрованный HTTPS. Иметь дело с HTTPS сложнее, чем с открытым трафиком. И бо́льшая часть всего трафика, который я переловил – шифрована, что на самом деле хорошо для пользователя, но не очень для меня в текущий момент.
Как защититься? Вариантов несколько, каждый со своими особенностями:
Возникает вопрос: что делать, если компьютер, к которому хочется получить доступ, находится, например, в закрытом помещении, а кабель находится под камерами или спрятан? Ничего сложного, достаточно прибегнуть к простейшим spoofing-атакам. При запросе MAC-адреса определенного узла атакующий узел начинает «спамить» сеть ARP-пакетами, в которых в качестве искомого адреса указывается свой MAC, тем самым заставляя атакуемого подключаться к нашему хосту.
Предварительно необходимо выбрать цель. В моем случае это будет мой коллега. Теперь воспользуемся очень древним, но вполне работоспособным ettercap [10]. Определим IP-адрес коллеги любым способом, далее обозначим цель атаки. Например, я хочу узнать, какие DNS’ы искал мой коллега. После этого в ettercap я вбиваю 2 IP-адреса: адрес DNS-сервера и, собственно, адрес жертвы. И…

Рисунок 3. Ловим DNS-запросы
Видно, что мой коллега ищет информацию на сайте Cisco, а заодно его система отправляет «служебные» запросы для определения различных сайтов MS.
Есть и хорошие новости. Большой список оборудования поддерживает защиту от ARP-spoofing, что может свести на нет подобные атаки. А если в компании используется SOC или SIEM, то можно попытаться найти злоумышленника по горячим следам.
Оптика
Волоконно-оптические линии связи являются другим, крайне распространенным каналом связи в любой компании. Что с защитой от MitM?
Ситуация двоякая. Если мы возьмем самый простой кабель без специальных защитных армированных оболочек, то для простейшего sniffing’а достаточно его изогнуть. На изгиб «вешается» специальное устройство. Часть света уходит за пределы кабеля на наше устройство, с которого мы собираем весь дамп.
Хорошо, что все же большинство трафика идет в шифрованном виде. А что делать, если нет? На самом деле, защититься трудно. Проще всего изолировать оптику таким образом, чтобы подобраться к ней было сложно. Другой способ – использовать более дорогой «защищенный» кабель, включающий в себя специальные меры защиты, позволяющие детектировать нарушение оболочки кабеля. Но при должной сноровке можно подключиться и к нему, да и перепрокладка кабеля зачастую крайне неприятное дело. Действенным способом является использование специального оборудования, которое будет реагировать на изменение уровня сигнала, при появлении изгиба волокна. Цена вопроса высока. Ну и, пожалуй, самое лучшее решение – использовать шифрование передаваемого трафика.
Если мы хотим каким-либо образом влиять на трафик, то тут все сложнее. Самый эффективный способ – врезка, при которой посередине встраивается специальное оборудование. Недостаток такого способа в том, что нам надо на некоторое время (достаточно большое) разрезать кабель со всеми вытекающими последствиями, что может смутить безопасников в компании. Но при успешной работе мы, в большинстве случаев, получим возможность влиять на большой объем трафика, так как волокно редко прокладывают до компьютера пользователей. Чаще всего это канал передачи данных, допустим, между отдельными филиалами компаний.
Статья, покрывающая чуть большее число вариантов подключений к оптоволокну, также доступна тут [11].
А что с Wi-Fi?
А все то же самое и даже проще! Рассмотрим для начала WPA2-PSK (подключение по паролю). Для «скрытности» атаки важно выполнить одно требование: надо знать настоящий пароль, это позволит устройствам, на которых настроено автоподключение к сети, без каких-либо проблем подключаться именно к «зловредной» сети. Итак, поднимаем Wi-Fi-точку доступа с идентичным паролем и ждем подключений. Если не хотим ждать, то можно начать рассылать deauth-пакеты, что заставит пользователей отключиться от текущих точек доступа, а некоторых из них, для которых зловредная точка доступа окажется мощнее, заставить подключиться к вам. Для создания точки я воспользовался hostapd [12] – мощнейшим средством создания различных сетей во всевозможных конфигурациях. Wi-Fi-интерфейс я подключил к бриджу br0, чтобы пользователи не заметили что-то неладное и могли дальше работать с сервисами внутри локальной сети. Ждем некоторое время и наслаждаемся результатами.

Рисунок 4. Смотрим дамп iPhone
WPA2 Enterprise (с аутентификацией через внешний сервис, например, RADIUS) с точки зрения безопасности гораздо лучше. Если классический PSK может даже не иметь доступа до локальной сети компании (например, если сеть гостевая), то для работы Enterprise необходимо иметь доступ до сервера аутентификации, в качестве которого может использоваться тот же Windows NPS [13]. Кроме того, для работы точки доступа требуется сертификат с закрытым ключом [14], который получить весьма проблематично. Можно, конечно, выпустить самоподписанный, но это может вызвать некоторые проблемы, так как в идеальном мире клиентское устройство должно проверять данный сертификат. В целом, настроить подобную точку доступа и заставить подключиться к ней клиентов возможно, но с большими оговорками. Скорее всего, злоумышленника все же удастся поймать.
Как защитить Wi-Fi-сеть? Используйте WPA2 Enterprise (желательно по сертификатам) и настройте на клиентских устройствах обязательную проверку сертификата точки доступа, сэмулировать Evil Twin точку доступа тогда будет значительно труднее. Внимательно подходите к настройке сервера аутентификации. Если допустимо, используйте возможности имеющегося оборудования, например, Cisco Wireless Intrusion Prevention System, суть которого в данном случае заключается в поиске зловредных точек доступа и воспрепятствовании подключения к ним различных клиентов.
Подведём небольшой итог. Как видим, в том или ином виде самые распространённые каналы передачи данных подвержены атакам MitM. Как защититься?
А что, если злоумышленник – «доверенное» лицо? Сотрудник компании, имеющий легитимный доступ к локальной сети, но имеющий саботажные мысли? Что он может предпринять для анализа шифрованного трафика и, самое главное, каким образом можно обезопасить себя от подобного? Об этом мы расскажем уже в следующих статьях, вновь вернувшись и к нашим DNS-запросам, и к HTTPS-трафику.
Автор: Acribia
Источник [15]
Сайт-источник PVSM.RU: https://www.pvsm.ru
Путь до страницы источника: https://www.pvsm.ru/informatsionnaya-bezopasnost/307787
Ссылки в тексте:
[1] здесь: https://habr.com/ru/post/90678/
[2] Диффи-Хеллмана: https://ru.wikipedia.org/wiki/%D0%9F%D1%80%D0%BE%D1%82%D0%BE%D0%BA%D0%BE%D0%BB_%D0%94%D0%B8%D1%84%D1%84%D0%B8_%E2%80%94_%D0%A5%D0%B5%D0%BB%D0%BB%D0%BC%D0%B0%D0%BD%D0%B0
[3] Arch: https://www.archlinux.org/
[4] brctl: https://linux.die.net/man/8/brctl
[5] NetworkManager: https://gitlab.freedesktop.org/NetworkManager/NetworkManager
[6] dhclient: https://linux.die.net/man/8/dhclient
[7] Wireshark: https://www.wireshark.org/
[8] MAC-pinning: https://www.juniper.net/documentation/en_US/junos/topics/concept/mac-pinning-understanding.html
[9] diary.ru: http://www.diary.ru/
[10] ettercap: https://www.ettercap-project.org/
[11] тут: https://habr.com/ru/post/176677/
[12] hostapd: https://w1.fi/hostapd/
[13] Windows NPS: https://docs.microsoft.com/ru-ru/windows-server/networking/technologies/nps/nps-top
[14] сертификат с закрытым ключом: https://ru.wikipedia.org/wiki/%D0%98%D0%BD%D1%84%D1%80%D0%B0%D1%81%D1%82%D1%80%D1%83%D0%BA%D1%82%D1%83%D1%80%D0%B0_%D0%BE%D1%82%D0%BA%D1%80%D1%8B%D1%82%D1%8B%D1%85_%D0%BA%D0%BB%D1%8E%D1%87%D0%B5%D0%B9
[15] Источник: https://habr.com/ru/post/438996/?utm_campaign=438996
Нажмите здесь для печати.