- HackWare.ru
- Этичный хакинг и тестирование на проникновение, информационная безопасность
- Выявление атаки человек-посередине (Man in the middle, MitM-атак)
- 1. Выявление модификации трафика
- 2. Выявление ARP-спуфинга (травления кэша ARP)
- 3. Выявление DNS спуфинга
- 4. Поиск сетевых интерфейсов в неразборчивом режиме (promiscuous mode)
- Заключение
- Атака “человек-посередине” (Man-In-The-Middle attacks). Инструкция по MITMf
- Защита от атаки человек-посередине в Wi-Fi сети.
HackWare.ru
Этичный хакинг и тестирование на проникновение, информационная безопасность
Выявление атаки человек-посередине (Man in the middle, MitM-атак)
Атака человек-посередине — это обобщённое название для различных методик, направленных на получение доступа к трафику в качестве посредника. Из-за большого разнообразия этих методик, проблематично реализовать единый инструмент выявления этих атак, который бы работал для всех возможных ситуаций. Например, при атаке человек-посередине в локальной сети, обычно используется ARP-спуфинг (травление). И многие инструменты по «выявлению атаки человек-посередине» следят за изменением пар адресов Ethernet/IP или сообщают о подозрительной ARP-активности пассивным мониторингом ARP запросов/ответов. Но если эта атака используется на злонамеренно настроенном прокси-сервере, VPN, либо при других вариантах, когда не используется ARP-травление, то такие инструменты оказываются беспомощными.
Цель этого раздела — рассмотреть некоторые методики выявления атак человек-посередине, а также некоторые инструменты, предназначенные для определения, что в отношении вас осуществляется MitM-атака. Из-за разнообразия методик и сценариев реализации, невозможно гарантировать 100-процентное выявление.
1. Выявление модификации трафика
Как уже было сказано, при атаках человек-посередине не всегда используется ARP-спуфинг. Поэтому хотя обнаружение активности на уровне ARP является самым популярным способом выявления, более универсальным способом является обнаружение модификации трафика. В этом нам может помочь программа mitmcanary.
Принцип работы программы заключается в том, что она делает «контрольные» запросы и сохраняет полученные ответы. После этого она через определённые интервалы повторяет эти же запросы и сравнивает получаемые ответы. Программа достаточно интеллектуальна и для избежания ложных срабатываний выявляет динамические элементы в ответах и корректно их обрабатывает. Как только программа зафиксировала следы активности инструментов для MitM-атак, она сообщает об этом.
Примеры, как могут «наследить» некоторые инструменты:
- MITMf, по умолчанию меняет все HTTPS URL в HTMLкоде на HTTP. Выявляется по сравнению содержимого HTTP.
- Zarp + MITMProxy, MITMProxy имеет функционал, позволяющий очищать HTTP сжатие, это применяется для прозрачности передаваемого трафика, эта связка выявляется по исчезновению ранее присутствующего сжатия
- Responder, выявляется по внезапным изменениям в преобразовании ответов mDNS: неожиданный ответ; ответ является внутренним, а ожидается внешний; ответ отличен от ожидаемого IP
Автор программы подготовил несколько видео, на которых видно, как выявляется атака человек-посередине:
Программа mitmcanary в настоящее время отсутствует в репозиториях Kali Linux и BlackArch, но имеется простая инструкция по установке. Во всех примерах я буду вести атаки из BlackArch, а выявлять атаки в Kali Linux. Поэтому начинаю с установки mitmcanary в Kali Linux (инструкция по установке и запуску mitmcanary в BlackArch также имеется в Энциклопедии инструментов для хакинга):
Как уже было сказано, работу mitmcanary нужно начать с контрольных запросов. Для этого перейдите в каталог
И запустите файл setup_test_persistence.py:
Это займёт некоторое время — дождитесь окончания. Не должны выводиться сообщения об ошибках (если так, то у вас не хватает каких-то зависимостей).
Будет выведено что-то вроде этого:
После окончания этого процесса, в этой же директории выполните (это запустит фоновый процесс):
После этого откройте новое окно терминала и перейдите в коневую директорию с mitmcanary. У меня это директория bin/mitmcanary/, поэтому я ввожу
и выполните там:
В первом окне выводиться что-то вроде:
Т.е. программа раз в минуту делает контрольные запросы и ищет в них признаки атаки человек-посередине.
Во втором окне также присутствует вывод + открывается тёмное окно, авторы программы называют это окно «графическим интерфейсом»:
Можно подождать некоторое время, посёрфить по Интернету, чтобы убедиться, что программа не делает никаких ложных предупреждений.
Попробуем классическую программу Ettercap.
Я запускаю обычную MitM-атаку с ARP-спуфингом. На само травление mitmcanary не реагирует. Инструмент mitmcanary сам генерирует трафик, т. е. действий со стороны пользователя не требуется. Спустя некоторое время появляется одно единственное предупреждение, которое при последующих ближайших проверках не подтверждается. Но подобное же предупреждение появляется через несколько минут. Без дополнительного анализа я затрудняюсь сказать, является ли это примером ложного срабатывания — очень похоже на это. Вполне возможно, что это предупреждение вызвано нарушением связи, обусловленное необходимостью прохождения трафиком дополнительных маршрутов, либо особенностями моего некачественного Интернет-подключения.
Поскольку результат неочевиден (скорее «нет», чем «да»), то давайте попробуем программу Bettercap, которая имеет разнообразные модули. Не сомневаюсь, что при использовании различных плагинов Ettercap и/или дополнительных программ для расширения функциональности, мы бы также «засветились» для mitmcanary.
Для чистоты эксперимента я перезапускаю оборудование, запускаю mitmcanary на атакуемой машине и Bettercap на атакующей. При этом на атакуемой машине необязательно заново делать контрольные запросы — они сохраняются в файле внутри директории с программой. Т.е. достаточно запустить службу и графический интерфейс.
А в атакующей машине мы запустим Bettercap с включёнными парсерами:
Появляются отдельные предупреждения, которые также больше похожи на ложные срабатывания.
Зато запуск такой команды:
На атакуемой машине вызывает большое количество предупреждений о возможной атаке человек-посередине:
Итак, чем функциональней инструмент для атаки человек-посередине, тем больше следов он оставляет в трафике. Для практического использования mitmcanary необходимо соблюсти следующие условия:
- делать первоначальные запросы в доверенной сети, когда вы уверены, что посредник при передаче трафика отсутствует;
- отредактировать ресурсы, к которым делаются проверочные запросы, поскольку профессиональный злоумышленник может добавить дефолтные ресурсы в исключения, что сделает его невидимым для этого инструмента.
2. Выявление ARP-спуфинга (травления кэша ARP)
Очень часто атака человек-посередине в локальной сети начинается с ARP травления. Именно поэтому в основе многих инструментов, предназначенных для выявления MitM-атак, лежит механизм слежения за изменением ARP кэша, в котором приписаны соответствия между Ethernet (MAC-адресами) и IP адресами.
В качестве примера таких программ можно вспомнить arpwatch, arpalert и большое количество новых программ. Программа ArpON не только следит за изменениями ARP кэша, но и защищает его от них.
В качестве примера запустим arpwatch в режиме отладки, без создания форков в фоне и отправки сообщений по почте. Вместо этого сообщения отправляются в stderr (стандартный вывод ошибок).
На атакующей машине запустим Ettercap и начнём ARP-спуфинг. На атакуемой машине наблюдаем:
Программа arpwatch поможет быстро узнать о новых подключившихся устройствах в вашу локальную сеть, а также об изменениях ARP кэша.
Ещё один инструмент для выявления ARP спуфинга в реальном времени, это плагин самой Ettercap, который называется arp_cop. На атакуемой машине запустим Ettercap следующим образом:
А на атакующей начнём ARP-травление. На атакуемой машине сразу начинают выводиться предупреждения:
3. Выявление DNS спуфинга
DNS спуфинг свидетельствует, что между вами и пунктом назначения присутствует посредник, который может модифицировать ваш трафик. Как можно обнаружить, что DNS записи были подменены? Самый простой способ это сделать — сравнить с ответами сервера имён, которому вы доверяете. Но ведь записи в ответе, присланный на ваш запрос, также могут быть подменены…
Т.е. проверять нужно либо через зашифрованный канал (например, через Tor), либо использовать нестандартные настройки (другой порт, TCP вместо UDP). Примерно для этого предназначена программа sans от XiaoxiaoPu (по крайней мере, я так понял). У меня получилось с помощью этой программы перенаправлять DNS запросы через Tor и через нестандартные настройки на свой DNS сервер. Но я так и не смог от неё добиться, чтобы она показывала мне сообщения о спуфинге DNS ответов. А без этого смысл программы теряется.
Более достойных альтернатив мне найти не удалось.
В принципе, учитывая, что DNS спуферы, обычно, следят только за 53 портом, и только за протоколом UDP, то даже вручную достаточно просто проверить факт DNS спуфинга, правда для этого нужен свой собственный DNS сервер с нестандартной конфигурацией. Например, на атакующей машине я создал файл dns.conf со следующим содержанием:
Т.е. при запросе DNS записи для сайта mi-al.ru вместо реального IP будет присылаться IP машины злоумышленника.
Запускаю на атакующей машине:
А на атакуемой делаю две проверки:
Видно, что для «обычного» DNS запроса прислан локальный IP 192.168.1.48, а при запросе к DNS на нетипичном порту присылается верный IP сервера.
Если бы сервер был настроен для работы с протоколом TCP (а не UDP), тогда команда выглядела бы так:
Явно не хватает инструмента, который сам бы отслеживал DNS ответы в трафике, перепроверял бы их по альтернативному источнику и поднимал тревогу в случае спуфинга.
Чтобы обойтись без настройки своего собственного удалённого DNS, можно сделать запросы к серверу имён через Tor. Поскольку весь трафик Tor шифруется, то полученные таким образом DNS ответы не по зубам посреднику. Если Tor ещё не установлен, то установите его.
Если это вам нужно, добавьте эту службу в автозагрузку:
Откройте файл /etc/tor/torrc и добавьте туда следующие строки:
Обратите внимание на цифру 530. Это номер порта, вместо 530 можно указать любой другой (незанятый) порт. Главное, запомните его.
Опять делаем проверки:
Теперь в качестве сервера мы указываем localhost, а номер порта пишите тот, который указали в настройках /etc/tor/torrc.
Как видно из следующего скриншота, в отношении машины, на которой сделана проверка, осуществляется атака DNS спуфинг:
4. Поиск сетевых интерфейсов в неразборчивом режиме (promiscuous mode)
Если в вашей локальной сети есть (а особенно если внезапно появилось) оборудование в неразборчивом режиме, это очень подозрительно, хотя и не свидетельствует однозначно об атаке человек-посередине.
В этом режиме сетевая плата позволяет принимать все пакеты независимо от того, кому они адресованы.
В нормальном состоянии на Ethernet-интерфейсе используется фильтрация пакетов канального уровня и если MAC-адрес в заголовке назначения принятого пакета не совпадает с MAC-адресом текущего сетевого интерфейса и не является широковещательным, то пакет отбрасывается. В «неразборчивом» режиме фильтрация на сетевом интерфейсе отключается и все пакеты, включая непредназначенные текущему узлу, пропускаются в систему.
Большинство операционных систем требуют прав администратора для включения «неразборчивого» режима. Т.е. перевод сетевой карты в неразборчивый режим – это сознательное действие, которое может преследовать цели сниффинга.
Для поиска сетевых интерфейсов в неразборчивом режиме имеется плагин Ettercap, который называется search_promisc.
Пример запуска плагина:
Работа плагина не является полностью надёжной, могут иметь место ошибки в определении режима сетевого интерфейса.
Заключение
Некоторые методы атаки человек-посередине оставляют много следов, а некоторые (например, пассивный поиск учётных данных на прокси) невозможно или почти невозможно обнаружить.
Атака “человек-посередине” (Man-In-The-Middle attacks). Инструкция по MITMf
Привет, начинающий хакер.
Давай продолжим изучать хакерские инструменты и сегодня поговорим о MITMf. Так как писать сухой гайд с обилием технической информации мне скучно, а тебе вряд ли интересно будет его читать, то рассказывать о его возможностях я буду на примерах и в плоскости троллинга твоего, условного, соседа, ну или посетителей какого-нибудь кафе, ну или сам придумай зачем оно вообще тебе надо. При этом, напомню, что вмешательство в работу чужих сетей, может нарушать требования законодательства, а все материалы в этой статье представлены исключительно в образовательных и ознакомительных целях, а также для повышения уровня понимания основ информационной безопасности и не являются призывом к действию.
Ну, а теперь начнём.
MITMf — это фреймворк для проведения атак человек-посередине (Man-In-The-Middle attacks).
Атака человек-посередине, её ещё называют атака посредника – это когда злоумышленник тайно ретранслирует и при необходимости изменяет связь между двумя объектами, которые считают, что они
взаимодействуют непосредственно друг с другом, то есть это метод компрометации канала связи способом подключения к каналу между контрагентами, с последующим вмешательством в протокол передачи.
Теперь давай перейдём к установке MITMf. Для его работы нужно установить некоторые модули, что бы это сделать в окне терминала пишем:
Теперь копируем репозиторий:
После окончания копирования нужно перейти в каталог с программой, где инициализировать и обновить подмодули, сделать это можно так:
Теперь нужно установить зависимости:
После окончания всё готово к работе, можем запустить MITMf и ознакомиться с функционалом:
и мы увидим инструкцию по использованию и список возможностей программы:
А теперь пришло время запустить и посмотреть как всё это дело работает. Для этого надо сформировать команду для запуска. Как мы видим из руководства по MITMf нам, в первую очередь, нужно задать используемый интерфейс и адрес маршрутизатора. Сетевой интерфейс определяем командой:
тут, как правило, ты увидишь eth0 – это подключение через Ethernet-адаптер или wlan0 – беспроводное подключение. А определить адрес маршрутизатора можно командой:
Теперь, нам нужно выбрать плагин, для использования, и задать его параметры. Для первого раза используем что-нибудь простое. Например, давай перевернём все картинки в браузере (это произойдет на всех компьютерах подключенных к атакуемой сети), но перед этим нам нужно определится какие плагины использовать. Давай по порядку: так как нам необходимо изменять трафик, то логично использовать плагины –spoof и –arp. А ещё мы с тобой знаем, что есть такая штука как HSTS (HTTP Strict Transport Security) – это технология принудительно активирующая защищённое соединение через протокол HTTPS и сильно усложняющая проведение атаки “человек-посередине” и, логично было бы, попытаться обойти HSTS для чего нужно задействовать плагины –dns и –hsts. И в самом конце задействуем плагин переворачивания изображений –upsidedownternet. В итоге, собрав всё воедино, мы получим такой набор команд:
После запуска мы можем понаблюдать результатами работы в логах:
А изображения на веб-сайтах перевернуться на 180 градусов. Представь как пригорит у твоего соседа и как он будет пытаться это пофиксить.
Это был один из вариантов использования MITMf. В качестве следующего примера попробуем внедрить код в веб страницы которые просматривает твой сосед.
Для этого нам нужно будет использовать плагин –inject в сочетании с атрибутом –js-file в котором мы укажем путь к файлу с кодом. Это может быть абсолютно любой код, но для примера мы создадим простое предупреждение.
Открываем текстовый редактор и пишем:
и сохраняем, с названием script.js
После чего пишем команду для запуска:
В результате наш скрипт будет внедрен в веб-запрос цели и как только он откроет сайт, появиться наше предупреждение:
Я думаю этих примеров достаточно что бы понять принцип использования MITMf, можешь поэкспериментировать с другими плагинами, например с перехватом cookies или заменой HTML, логика их использования и синтаксис такие же как и с теми, что применили мы.
Защита от атаки человек-посередине в Wi-Fi сети.
Атака посредника очень эффективный инструмент, который предоставляет злоумышленнику немалый функционал и это действительно серьезная проблема безопасности забывать о которой точно не стоит. Что касается защиты, то соблюдая определенные меры предосторожности вполне можно себя обезопасить:
- Атака человек-посередине станет невозможна если злодей не сможет попасть в твою сеть, для этого, соблюдай элементарные меры предосторожности: придумай сложный пароль, не дату своего рождения и не свой номер телефона, а такой чтоб его было крайне проблематично подобрать банальным перебором (brute force), сделай свою сеть скрытой, и, пожалуй самое важное, постоянно контролируй, кто подключен к твоей сети;
- Не пользуйся общественными wi-fi сетями. Я думаю это должно быть очевидно после прочтения этой статьи. Если прям очень надо воспользоваться, то используй VPN;
- Никогда не отправляй конфиденциальную информацию (лучше вообще любую информацию о себе) на веб-сайты, не использующий защищенный протокол HTTPS;
- Регулярно обновляй программное обеспечение, антивирус, фаервол и прошивку своего роутера.
А на этом пожалуй всё. Не забывай возвращаться к нам.