Сеть компании и MitM. Часть 1

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

khsf0nyho00ib-qtgd3yqz1hoxg.jpeg
Сегодня мы начинаем цикл статей, посвященный атакам «человек посередине» (и ряду сопутствующих) на типичные протоколы и каналы передачи, встречающиеся практически в любой компании. Для начала рассмотрим базовые уровни: физический и канальный.

Заинтересовались? Добро пожаловать под кат.

Немного теории


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

1t8rfnbvyhsewwcajvs73r4a61k.jpeg

Главным на рисунке являются линии как оранжевая, так и красные. Оранжевая — предполагаемый путь данных, красные — фактический. Среда передачи или протокол в данном случае неважны. Алиса может быть, к примеру, Wi-Fi-клиентом, а Боб — Wi-Fi точкой доступа. Так или иначе всегда есть третья сторона, которая осуществляет какие-либо действия с передаваемой информацией.

Почему мы упустили канал передачи? Потому что такой атаке подвержены в той или иной мере все уровни сетевой модели OSI. Дальше мы это подтвердим.

Приступим к рассмотрению атаки с первого и второго уровня OSI — физического и канального.

Практика


Медь

Начнём с самого простого — съем данных с витой пары. Это не совсем MitM, это классический sniffing, но в данном случае это — «предпосылка» к более серьезным атакам. На самом деле, чтобы снять данные с витой пары, скажем, 100Base-T, достаточно иметь просто лишний роутер, на который можно установить какой-нибудь DD-WRT/OpenWRT или любой другой аналог. Некоторое время назад о подобном уже упоминалось здесь.

Более надежный способ — использование специальных устройств. Но у него есть недостатки:

  1. При должной физической безопасности (СКУД, видеонаблюдение) и хорошей осведомленности сотрудников о действиях, в случае появления «подозрительных» предметов крайне высок риск обнаружения подобных устройств.
  2. Злоумышленник получает доступ только к тем данным, которые ходят по кабелю, к которому он подключился. Если кабель подключен к будке охранника, то, скорее всего, преступник сможет наблюдать изображения с ряда камер и периодические сессии Youtube, но не финансовые данные из SAP.
  3. Третье, и важнейшее– шифрование трафика. По сути, сейчас уже почти любой сервер, любая служба работает через TLS или использует какой-либо аналог для криптозащиты передаваемых данных. Не имея ключа, мы не расшифруем переданные данные. А в случае использования TLS 1.3 или TLS 1.2 на алгоритмах Диффи-Хеллмана даже это не поможет.


Все ведет к тому, что подобный sniffing может не принести желаемых результатов злоумышленнику. Потребуется более «гибкое» подключение, то есть «встраивание» в линию передачи данных. Например, вот так, немного нагло:

j0rqjhkhjbtfdebcavvip4cwm0s.jpeg

У данного способа много недостатков. Например, его легко детектировать при наличии различных средств защиты или же недоверчивых глаз, с подозрением относящихся к появлению чего-то нового на рабочем месте. Но есть у него и преимущество: полный контроль и возможность модификации передаваемых данных. Смоделируем атаку в реальной жизни. Потребуется 2 вещи: моя рабочая машинка, на которой пишется данный текст, мой ноутбук с Archна борту, хотя должен подойти любой Linux-дистрибутив. Соединения «моя рабочая машинка» –«ноутбук» и «ноутбук» — «локальная сеть» будут выполняться по кабелю, для чего к ноутбуку подключен USB-сетевой адаптер. Для настройки бриджа воспользуемся brctl, хотя такой функционал заявлен даже у NetworkManager.

Настроим бридж:

# brctl addbr br0 // вместо br0 можем ввести любое удобное наименование
# brctl addif br0 enp14s0 // здесь enp14s0 – мой внешний интерфейс, у вас, скорее всего, он будет называться иначе
# brctl addif br0 enp0s20u4 // enp0s20u4 – интерфейс для подключения рабочего компьютера


Если вы при этом хотите получить IP-адрес, достаточно натравить какой-либо dhclient на br0, либо же «руками» установить статический IP (# ip ad add X.X. X.X/X dev br0).

Итак, на ноутбуке создан bridge-интерфейс, к USB-интерфейсу подключен компьютер, основной интерфейс идет в локальную сеть. Запускаем любое ПО для перехвата трафика (для удобства воспользуюсь Wireshark с GUI) и наблюдаем следующее:

cb__hi4taxtjxwoyjro1aaob91g.jpeg
Рисунок 1. Wireshark в деле

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

kqhw_jeehbfeyp_ujukyxdxqbys.jpeg
Рисунок 2. Ooops

На деле же все чуточку сложнее. diary.ru — один из редких сайтов, не перенаправляющих пользователя на шифрованный HTTPS. Иметь дело с HTTPS сложнее, чем с открытым трафиком. И бо́льшая часть всего трафика, который я переловил — шифрована, что на самом деле хорошо для пользователя, но не очень для меня в текущий момент.

Как защититься? Вариантов несколько, каждый со своими особенностями:

  1. MAC-pinning не поможет: MAC«и подделывают все, кому не лень. На тех же Linux можно воспользоваться macchanger, а в Windows через Диспетчер Устройств;
  2. 802.1X-авторизация — отличная вещь. Но есть пара нюансов: в режиме самого простого sniffing«а не защитит, так как злоумышленник остаётся «невидимым» для подключения и с точки зрения коммутатора, в сетевой порт подключено лишь атакуемое устройство. Другое дело, в случае воздействия на трафик, серьезно повышается шанс раскрыть свое присутствие, так как теперь в сеть через коммутатор от вас начинает исходить трафик, на который могут отреагировать различные средства защиты. Все упирается в используемое оборудование (SIEM или нечто подобное) и скиллы безопасников в компании;
  3. Решения «User and entity behavior analytics» (UEBA) позволят отследить что-то подозрительное в сети. Как и в случае с 802.1X, при обычном sniffing«е вы остаётесь невидимым, но при генерации трафика за вами выедут. Применяется не столь часто, и все снова зависит от скиллов безопасников.


Возникает вопрос: что делать, если компьютер, к которому хочется получить доступ, находится, например, в закрытом помещении, а кабель находится под камерами или спрятан? Ничего сложного, достаточно прибегнуть к простейшим spoofing-атакам. При запросе MAC-адреса определенного узла атакующий узел начинает «спамить» сеть ARP-пакетами, в которых в качестве искомого адреса указывается свой MAC, тем самым заставляя атакуемого подключаться к нашему хосту.

Предварительно необходимо выбрать цель. В моем случае это будет мой коллега. Теперь воспользуемся очень древним, но вполне работоспособным ettercap. Определим IP-адрес коллеги любым способом, далее обозначим цель атаки. Например, я хочу узнать, какие DNS«ы искал мой коллега. После этого в ettercap я вбиваю 2 IP-адреса: адрес DNS-сервера и, собственно, адрес жертвы. И…

3wp672zogodzwj9czv7wkbi6ry0.jpeg
Рисунок 3. Ловим DNS-запросы

Видно, что мой коллега ищет информацию на сайте Cisco, а заодно его система отправляет «служебные» запросы для определения различных сайтов MS.

Есть и хорошие новости. Большой список оборудования поддерживает защиту от ARP-spoofing, что может свести на нет подобные атаки. А если в компании используется SOC или SIEM, то можно попытаться найти злоумышленника по горячим следам.

Оптика

Волоконно-оптические линии связи являются другим, крайне распространенным каналом связи в любой компании. Что с защитой от MitM?

Ситуация двоякая. Если мы возьмем самый простой кабель без специальных защитных армированных оболочек, то для простейшего sniffing«а достаточно его изогнуть. На изгиб «вешается» специальное устройство. Часть света уходит за пределы кабеля на наше устройство, с которого мы собираем весь дамп.

Хорошо, что все же большинство трафика идет в шифрованном виде. А что делать, если нет? На самом деле, защититься трудно. Проще всего изолировать оптику таким образом, чтобы подобраться к ней было сложно. Другой способ — использовать более дорогой «защищенный» кабель, включающий в себя специальные меры защиты, позволяющие детектировать нарушение оболочки кабеля. Но при должной сноровке можно подключиться и к нему, да и перепрокладка кабеля зачастую крайне неприятное дело. Действенным способом является использование специального оборудования, которое будет реагировать на изменение уровня сигнала, при появлении изгиба волокна. Цена вопроса высока. Ну и, пожалуй, самое лучшее решение — использовать шифрование передаваемого трафика.

Если мы хотим каким-либо образом влиять на трафик, то тут все сложнее. Самый эффективный способ — врезка, при которой посередине встраивается специальное оборудование. Недостаток такого способа в том, что нам надо на некоторое время (достаточно большое) разрезать кабель со всеми вытекающими последствиями, что может смутить безопасников в компании. Но при успешной работе мы, в большинстве случаев, получим возможность влиять на большой объем трафика, так как волокно редко прокладывают до компьютера пользователей. Чаще всего это канал передачи данных, допустим, между отдельными филиалами компаний.

Статья, покрывающая чуть большее число вариантов подключений к оптоволокну, также доступна тут.

А что с Wi-Fi?

А все то же самое и даже проще! Рассмотрим для начала WPA2-PSK (подключение по паролю). Для «скрытности» атаки важно выполнить одно требование: надо знать настоящий пароль, это позволит устройствам, на которых настроено автоподключение к сети, без каких-либо проблем подключаться именно к «зловредной» сети. Итак, поднимаем Wi-Fi-точку доступа с идентичным паролем и ждем подключений. Если не хотим ждать, то можно начать рассылать deauth-пакеты, что заставит пользователей отключиться от текущих точек доступа, а некоторых из них, для которых зловредная точка доступа окажется мощнее, заставить подключиться к вам. Для создания точки я воспользовался hostapd — мощнейшим средством создания различных сетей во всевозможных конфигурациях. Wi-Fi-интерфейс я подключил к бриджу br0, чтобы пользователи не заметили что-то неладное и могли дальше работать с сервисами внутри локальной сети. Ждем некоторое время и наслаждаемся результатами.

ztk88nyiocctaptvyjyesncaip0.jpeg
Рисунок 4. Смотрим дамп iPhone

WPA2 Enterprise (с аутентификацией через внешний сервис, например, RADIUS) с точки зрения безопасности гораздо лучше. Если классический PSK может даже не иметь доступа до локальной сети компании (например, если сеть гостевая), то для работы Enterprise необходимо иметь доступ до сервера аутентификации, в качестве которого может использоваться тот же Windows NPS. Кроме того, для работы точки доступа требуется сертификат с закрытым ключом, который получить весьма проблематично. Можно, конечно, выпустить самоподписанный, но это может вызвать некоторые проблемы, так как в идеальном мире клиентское устройство должно проверять данный сертификат. В целом, настроить подобную точку доступа и заставить подключиться к ней клиентов возможно, но с большими оговорками. Скорее всего, злоумышленника все же удастся поймать.

Как защитить Wi-Fi-сеть? Используйте WPA2 Enterprise (желательно по сертификатам) и настройте на клиентских устройствах обязательную проверку сертификата точки доступа, сэмулировать Evil Twin точку доступа тогда будет значительно труднее. Внимательно подходите к настройке сервера аутентификации. Если допустимо, используйте возможности имеющегося оборудования, например, Cisco Wireless Intrusion Prevention System, суть которого в данном случае заключается в поиске зловредных точек доступа и воспрепятствовании подключения к ним различных клиентов.

Вместо заключения


Подведём небольшой итог. Как видим, в том или ином виде самые распространённые каналы передачи данных подвержены атакам MitM. Как защититься?

  • используйте шифрование; это не так сложно и весьма эффективно;
  • внедрение любых информационных систем (да тех же Wi-Fi) сетей не должно проходить под лозунгом «Лишь бы работало!», особенно, если в системе будет циркулировать действительно важная информация, необходимо рассматривать процесс с точки зрения защиты информации;
  • используйте средства защиты или функционал используемого оборудования. Cisco WIPS, различные IPS/IDS, UEBA и т.д. Это позволит если не остановить работу злоумышленника, то задетектировать её и принять меры для поимки преступника.


А что, если злоумышленник — «доверенное» лицо? Сотрудник компании, имеющий легитимный доступ к локальной сети, но имеющий саботажные мысли? Что он может предпринять для анализа шифрованного трафика и, самое главное, каким образом можно обезопасить себя от подобного? Об этом мы расскажем уже в следующих статьях, вновь вернувшись и к нашим DNS-запросам, и к HTTPS-трафику.

© Habrahabr.ru