Атака MITM. Разбор и пример использования
Атака посредника, или атака «человек посередине» (англ. Man in the middle (MITM)) – вид атаки в криптографии, когда злоумышленник тайно ретранслирует и при необходимости изменяет связь между двумя сторонами, которые считают, что они непосредственно общаются друг с другом. Является методом компрометации канала связи, при котором взломщик, подключившись к каналу между контрагентами, осуществляет вмешательство в протокол передачи, удаляя или искажая информацию.
Если говорить простым языком, то это такая атака, когда какой-нибудь человек вмешивается в связь между двумя людьми или человеком и интернетом (браузером, программами и т.д.).
Цель такой атаки, как и большинство компьютерных атак – определенная информация и возможность ее подменить в своих целях. Информация может быть самой разной: от истории посещения браузера до паролей от онлайн-банкинга. А подменить можно сообщение в переписке со знакомым, девушкой, начальником и т.д., тем самым поссорить людей и получить секретную информацию в виде ответа на подмененное сообщение.
Также часто используется подмена домена. Простым подслушиванием трафика нельзя перехватить зашифрованный трафик при использовании HTTPS, но можно перенаправить пользователя на фейковый сайт, либо сделать так, чтобы пользователя принудительно направило на версию сайта HTTP (если такая есть параллельно с HTTPS).
Какие могут быть варианты MITM-атаки?
Самые распространенные MITM атаки – атаки с использованием Wi-FI маршрутизатора в качестве инструмента для проведения своей атаки. В этом случае создается фейковый используемый роутер и подменяется сама сеть. Еще могут использоваться ошибки в настройке и/или защиты сети, которые позволяют подключиться к ней и перехватывать трафик.
В первом случае злоумышленник раздает вайфай и называет его так же, как и названа публичная открытая сеть вайфая. При этом он может использовать деаутентификацию пользователей настоящей сети. Грубо говоря, всех выкинуть из той сети, чтобы пользователи переподключились уже к его сети. А дальше уже он спокойно прослушивает трафик и перехватывает то, что ему нужно. Плюс в том, что это проще. Плюс и минус одновременно – много пользователей, чей трафик можно перехватить, но можно запутаться в нем. Минус такого способа в том, что люди не особо доверяют открытым вайфай сетям и редко заходят туда в онлайн-банкинг и подобные вещи.
Во втором случае вскрывается закрытая личная сеть, и производится атака. Также прослушивается и перехватывается весь трафик. Минус в том, что это сложнее. Плюс и минус одновременно – пользователей мало, но зато не запутаешься. Но плюс в том, что чаще всего жертва думает, что она в полной безопасности, поэтому можно долго сидеть и ловить трафик и скорее всего поймать крупную рыбу.
Пример MITM-атаки
Вклиниваться будем между компом пользователя и сервером. При этом пользователь будет верить в то, что мы – это сервер, а сервер в то, что мы – это пользователь.
Для этого понадобится Linux, желательно Kali Linux или BackTrack (старая версия Kali Linux), так как там предустановлены нужные нам инструменты.
Заходим в Linux и открываем три терминала. Также мы должны быть подключены к той сети, в которой находится пользователь.
Далее воспользуемся утилитой Arpspoof. Для начала займемся пользователем. Необходимо поменять MAC-адрес сервера на наш MAC-адрес. Пишем в первом терминале:
Этой командой мы объявили клиенту, что мы сервер. Теперь во втором терминале мы обманем сервер:
Важно использовать эти команды именно в такой последовательности!
Теперь, когда мы наебали клиента и сервер, надо настроить передачу трафика на другую машину. Если мы это не сделаем, то все пакеты будут задерживаться у нас. Грубо говоря, интернет будет тупить, пользователь заподозрит неладное и начнет делать те действия, которые нам не нужны (перезагружать роутер и т.д.). Для этой цели нужно изменить статус ip_forward (встроенный ресивер в Linux) на 1 (то есть, просто включим). Пишем это в третьем терминале:
Теперь мы настроили так, что наш комп передает трафик в обе стороны, при этом перехватывая его. Тем самым, мы стали посредником трафика.
Осталось его проанализировать. Для этого есть множество разных sniffing-инструментов (от английского «sniff» – нюхать), такие как Wireshark, tcpdump, dsniff и другие. Рассмотрим на примере dsniff.
Инструмент обрабатывает информацию, передаваемую в незашифрованном виде (то есть протоколы ftp, telnet, HTTP, SNMP, POP, LDAP и т.д – да; протоколы HTTPS и т.д – нет). Чтобы его запустить, вводим такую команду в третий терминал:
Как видим, dsniff начал слушать интерфейс eth0.Приятный итог:
HackWare.ru
Этичный хакинг и тестирование на проникновение, информационная безопасность
Инструкция по Ettercap: атака человек-посередине (MitM), перехват паролей, обход HSTS, подмена данных на лету, использование пользовательских фильтров и плагинов, подцепление на BeEF, заражение бэкдорами
Оглавление
Как использовать Ettercap?
Инструкции по Ettercap уже имеются, в том числе и на русском языке. Мне, например, нравится этот видео мануал:
Больше примеров хороших инструкций я привести не могу. Но даже если на вышеприведённое видео посмотреть критически и осмыслить, что всё-таки мы там видели? Мы увидели, что Ettercap – это такая программа для сканирования хостов и ARP спуфинга… Какие-либо другие возможности Ettercap не раскрыты.
Цель данного раздела – собрать практические примеры использования Ettercap в различных сценариях. Показать реальные случаи использования Ettercap. Опять же, всеобъемлющей инструкции не получится, но попытаемся собрать как можно больше эффективных методик работы с Ettercap.
Кроме этой инструкции также можно дополнительно почитать про Ettercap:
Конечно же, рекомендуется глубже ознакомиться со всеми программами, упоминаемыми в этой инструкции:
Альтернативы Ettercap
Ettercap является самой популярной программой для атаки человек-посередине, но является ли она самой лучшей? На протяжении всей инструкции вы будете видеть, что Ettercap почти никогда не используется в одиночку, что всегда та или иная программа выстраивается с ней в цепочку по обработке трафика. Возможно, это добавляет гибкости, вообще, такой подход лежит в основе UNIX – одна программа выполняет одну задачу, а конечный пользователь комбинирует разнообразные программы для достижения желаемого результата. При таком подходе код программ легче поддерживать, из таких миниатюрных «кирпичиков» можно построить систему любой сложности и гибкости. Тем не менее, иметь пять открытых консолей с разными задачами, работа программ которых направлена для достижения одного единственного результата – это не очень удобно, это просто сложнее, есть вероятность допустить ошибку на каком-то этапе, и вся настроенная система отработает вхолостую.
Также Etterfilter (пользовательские фильтры данных Ettercap) за свои недостатки подвергаются критике.
В общем, на конкурентов Ettercap есть запрос и достойные конкуренты уже появились.
Например, MITMf. Это фреймворк, в котором встроен анализатор данных (перехватчик паролей), большое количество модулей, которые позволяют делать всё, что мы делаем в данной инструкции (и даже больше!) с помощью десятка программ, в одном единственном фреймворке, даже имеется улучшенный механизм по модификации данных на лету.
Ещё одна программа, которая создавалась в качестве улучшенного Ettercap – это Bettercap. Автор этого нового инструмента указывает на такие недостатки как нестабильность Ettercap на больших сетях, неудачная реализация механизма фильтров, отсутствие хорошего механизма визуализации данных и необходимость использовать множество программ в связке с Ettercap. Bettercap сделан чтобы победить все эти недостатки.
Т.е. конкуренты Ettercap однозначно заслуживают изучения и тестирования. Мы обязательно к ним вернёмся на страницах этого ресурса. Но начнём мы с классики – с Ettercap. Конкуренты Ettercap просто мало известны, и имеется большой спрос на изучение Ettercap. Это также полезно, чтобы понимать более детально атаку человек-посередине. Не поработав Ettercap, трудно оценить достоинства новых программ. Чтобы было почти как в том еврейском анекдоте:
Рабинович встречает Изю и говорит ему:
— Я купил туфли в два раза меньше размера моей ноги.
— Уже на туфлях экономишь? — спрашивает Изя.
— Да нет, — объясняет Рабинович, — просто, когда домой заходишь, там жена-истеричка, сын-наркоман, сосед-псих. Тогда я снимаю туфли… и так хорошо.
Мы переходим с Ettercap на MITMf «и так хорошо. ». Ладно, это я шучу, конечно. Давайте уже займёмся делом!
Да, ещё несколько замечаний:
- Из-за того, что Ettercap сбрасывает свои привилегии, то после окончания атаки программа уже не может возвратить вспять сделанные ей изменения. Также если вы делаете подряд те примеры, которые здесь описаны, то вам нужно сбрасывать роутинг трафика. Самый просто способ «обнулить» изменения – это перезагрузить компьютер цели и атакующий компьютер.
- Все команды я выполняю здесь от рута.
- Для реализации описанных здесь примеров вам нужно минимум два компьютера в локальной сети. Они могут быть подключены к роутеру как по Wi-Fi, так и по проводу. При определённой сноровке, в качестве второго компьютера можно использовать виртуальную машину в VirtualBox.
1. Запуск атаки человек-посередине, перехват паролей и пересылаемых данных
1.1 Ettercap + Net-Creds + driftnet
Давайте начнём с самой простой реализации атаки человек-посередине. Мы будем делать практически то же самое, что и в видео выше. Но для анализа полученных результатов мы воспользуемся программами Net-Creds и driftnet.
- Посещённые URL
- отправленные запросы POST
- логины/пароли из форм HTTP
- логины/пароли при базовой HTTP аутентификации
- поиски HTTP
- логины/пароли FTP
- логины/пароли IRC
- логины/пароли POP
- логины/пароли IMAP
- логины/пароли Telnet
- логины/пароли SMTP
- SNMP community string (общую строку)
- все поддерживаемые протоколы NTLMv1/v2 вроде HTTP, SMB, LDAP и т.д.
- Kerberos
Хорошая подборка перехватываемых, а driftnet в этом плане попроще – только показывает перехваченные изображения.
Переключите вашу машину в режим пересылки (форвардинга).
Запускаем Ettercap с графическим интерфейсом (-G):
В меню выбираем Sniff, далее Unified, выбираем желаемый интерфейс:
Теперь выбираем Hosts, в нём подпункт Scan for hosts. После окончания сканирования выберите Hosts list:
В качестве Цели1 выберите роутер (Add to Target 1), в качестве Цели2 выберите устройство, которое будете атаковать (Add to Target 2).
Но здесь может возникнуть первая заминка, особенно, если хостов много. В разных инструкциях, в том числе в видео представленном выше, авторы лезут в целевую машину (у всех, почему-то, там Windows) и с помощью команды смотрят IP данной машины в локальной сети. Согласитесь, такой вариант неприемлем для реальных условий.
Если провести сканирование с помощью Nmap, то можно получить некоторую дополнительную информацию о хостах, точнее говоря, о фирме производителе сетевой карты:
Если данных всё равно недостаточно, то можно сделать сканирование с определением ОС:
Как видим, машина с IP 192.168.1.33 оказалась Windows, если это не знак свыше, тогда что это? 😉 LOL
Именно её мы и добавляем в качестве второй цели.
Теперь переходим к пункту меню Mitm. Там выберите ARP poisoning… Поставьте галочку на Sniff remote connections.
Начинаем собирать урожай, в одном окне запускаем
в другом (обе программы можно запускать без опций)
Сразу же пошёл сбор данных:
В правой части driftnet открыло ещё одно окно, в котором показывает перехваченные изображения. В окне net-creds мы видим посещённые сайты и перехваченные пароли:
1.2 Ettercap + Burp Suite
Программа Burp Suite кроме других своих замечательных свойств, обладает очень хорошим прокси, который позволяет очень наглядно видеть совершаемый обмен трафиком, в том числе передаваемые данные.
У вас уже должен быть запущен Ettercap как показано в пункте 1.1
Теперь, когда сниффинг трафика начался, сделаем перенаправление трафика на порт 8080:
Теперь запускаем Burp:
Переходим во вкладку Proxy -> Options. Там в самом верху в Proxy Listeners нажимаем Add и добавляем новый прослушиватель: на 8080 порту. В качестве Specific Address выберите IP компьютера атакующего (т.е. той машины, где запущен Burp).
Здесь же перейдите во вкладку Request handling и поставьте галочку на Support invisible proxying (enable only if needed):
Когда добавите новый прослушиватель, поставьте галочку там, где Running (это будет означать, что он задействован в данное время):
Теперь спуститесь в самый низ, найдите Allow requests to web interface using fully-qualifyed DNS hostnames и поставьте там галочку:
Теперь перейдите в Proxy -> Intercept, отключите его:
Теперь должен начаться анализ полученных данных.
Кстати, Burp, Net-Creds и driftnet не мешаются друг другу: вполне можете запускать их все вместе и следить за получаемыми результатами в любой из программ:
2. Обход HTTPS и HSTS
К большому сожалению всех, кто перехватывает данные, протокол HTTP (подразумевающей передачу данных в виде простого текста) очень активно сменяется протоколом HTTPS (подразумевающий передачу хорошо зашифрованных данных). Уже даже на многих маленьких сайтах активно внедряется HTTPS, если же говорить про коммерческую сферу и большие популярные сайты, а также социальные сети, то там HTTPS используется повсеместно. Также крупные сайты в последнее время активно внедряют HSTS, что ещё больше увеличивает проблемы атакующему.
Использование HTTPS не означает, что мы не можем перехватить трафик – мы можем это делать. Но поскольку трафик зашифрован, то для нас он имеет такую же ценность, как рандомный набор нулей и единиц (т.е. никакой).
Нам недоступны эффективные механизмы дешифрования этого трафика, поэтому мы будем применять атаку понижения протокола с HTTPS до HTTP, а также будем задействовать механизм частичного обхода HSTS.
2.1 Ettercap + SSLStrip+ + dns2proxy + Net-Creds
Нам нужна программа SSLStrip+. Обратите внимание на плюс в названии программы – даже если у вас в репозитории имеется SSLStrip, то нужно скачать новую версию, которая приводится здесь (старую удалять необязательно – она не мешается). Аналогично и с dns2proxy — скачайте её как сделано в этой инструкции.
Начните с запуска Ettercap и атаки человек посередине, как это показано в 1.1.
Настройте iptables для редиректа HTTP трафика:
Скачиваем и запускаем SSLStrip+.
Скачиваем и запускаем dns2proxy:
Для анализа данных запускаем
Начался перехват данных:
Вход в аккаунт Гугла происходит без шифрования переданных/полученных данных:
Поиск Гугла также лишился HTTPS:
На примере HackWare.ru посмотрите, что происходит с именами доменов (естественно, HTTPS больше нет):
2.2 Ettercap + SSLStrip+ + dns2proxy + Net-Creds + Burp
Если вам хочется анализировать данные с помощью Burp, но при этом использовать силу SSLStrip+ и dns2proxy, то это тоже можно сделать. Как обычно, начните с запуска Ettercap по пункту 1.1. Затем введите эти правила роутинга (мы отправляем трафик на прокси Burp):
Сам прокси Burp настройте, как это показано в пункте 1.2. Дополнительно во вкладке Request handling в поле Redirect to host впишите localhost, а в поле Redirect to port впишите 2000. Т.е. с прокси Burp мы переправляем трафик на SSLStrip+.
Правда при этом данные в Burp начинают отображаться следующим образом:
2.3 Ettercap + SSLsplit
Когда-нибудь этот раздел будет дописан, как и документация по SSLsplit.
3. Просмотр данных (посещённых сайтов и захваченных паролей) в Ettercap
В меню View нам доступны вкладки Connections и Profiles. Также можно поставить галочку на Resolve IP addresses (преобразовывать IP адреса). Connections – это, понятно, соединения. Ettercap собирает в памяти профили для каждого хоста, который он обнаружил. Там собираются пользователи и пароли. При этом профили с захваченными данными аккаунта (паролями), помечаются крестиком:
Не надо слишком сильно полагаться именно на профили – помечаются, например, перехваченные логины и пароли для FTP и для других сервисов, для которых полученную информацию программа однозначно может интерпретировать как учётные данные. Сюда не попадают, например, данные базовой аутентификации, введённые логины и пароли в веб-формы.
В Connections самые перспективные данные помечены звёздочкой:
Можно кликнуть два раза на эти записи для просмотра подробностей:
Чтобы не искать эти звёздочки по всем списку, можно сделать сортировку по этому полю и все они окажутся наверху или внизу:
Пойманная базовая аутентификация:
Логин-пароль для Яндекса (выделено внизу):
Это перехваченные учётные данные для Вконтакте:
Также самые интересные данные собираются в нижней консоли:
Если вы хотите сохранять результаты работы программы, то воспользуйтесь этими опциями (указывайте ключи при запуске Ettercap:
4. Подмена данных на лету в Ettercap
4.1 Использование пользовательских фильтров Ettercap
Примечание: При всех тестированиях у меня так и не заработали фильтры Ettercap. Трудно понять, дело в руках, в особенностях оборудования или в ошибке в самой программе… Но на для версии 0.8.2 (последней на текущий момент), имеется баг репорт о проблемах с фильтрами. Вообще, судя по баг репортам и форумам, фильтры или отваливаются часто, или вообще уже давно не работают. Имеется ветка, в которую внесены изменения 5 месяцев назад https://github.com/Ettercap/ettercap/tree/filter-improvements, т.е. filter-improvements (с улучшениями фильтров). И для этой ветки и для версии из репозитория были сделаны самые разнообразные тесты, опробованы разнообразные фильтры в разных условиях, потрачено много времени, но результата нет. Кстати, для установки версии filter-improvements в Kali Linux нужно сделать так:
В общем, если у вас фильтры не заработали – то вы не одиноки. В инструкции про Ettercap я не могу пропустить тему фильтров, поэтому они будут рассмотрены в любом случае.
До сих пор мы использовали Ettercap для ARP спуфинга. Это весьма поверхностное применение. Благодаря пользовательским фильтрам, мы можем вмешиваться и менять трафик «на лету». Фильтры должны содержаться в отдельных файлах и перед использованием их нужно компилировать с помощью программы Etterfilter. Хотя документация, на которую дана ссылка, и кажется куцей, но в купе с примерами, которые приведены ниже, она позволит писать довольно интересные фильтры.
Давайте создадим наш первый фильтр, он будет все изображения подменять на это:
В файл с именем img_replacer.filter скопируйте:
Ключ -F говорит программе, что нужно загрузить фильтр из файла, который идёт за ключом. После компиляции имя нашего нового файла с фильтром img_replacer.ef, поэтому команда приобретает вид:
Примечание: Когда вы мониторите веб-трафик, пакеты, которые вы видите, могут проходить в закодированной форме. Для эффективной работы фильтров, Ettercap нуждается в трафике в виде простого текста. По некоторым наблюдениям, тип кодировки, который используют веб-страницы это «Accept-Encoding: gzip, deflate»
Ниже фильтр, которые затирает кодировку принуждая к общению в форме простого текста:
Синтаксис написания фильтров подробно описан здесь, а далее ещё несколько примеров:
4.2 Подмена данных с помощью Burp
Запускаем Ettercap и Burp как это описано в пункте 1.2 или в пункте 2.2.
В Burp переходим в Proxy -> Options. Находим там Match and Replace. Нажимаем Add для добавления нового правила.
- Request header – это заголовок запроса
- Request body – тело запроса
- Response header – заголовок ответа
- Response body – тело ответа
- Request param name – Имя параметра запроса
- Request param value – Значение параметра запроса
- Request first line – Первая строка запроса
Если нужно поменять данные, передаваемые методом GET, то это относится к заголовкам.
В HTML разметке также есть такое понятие как head (тэг head). К этому заголовку те, о которых сказано чуть выше, не имеют никакого отношения. Чуть выше говориться о заголовках пакетов. Если вы хотите изменить содержимое HTML страницы, то нужно вместо Request header всегда выбирать Response body, даже если вы собираетесь менять содержимое тэга head (например, заголовок).
Если вы не знакомы с регулярными выражениями, то, в принципе, ничего страшного: HTML многое прощает, и то, что ему непонятно, он просто игнорирует – этим можно пользоваться. Если же вы умеете пользоваться регулярными выражениями, то я вас уважаю. )))
Для примера создадим новое правило, Request header меняем на Response body. В самом правиле мы будем менять
Поставьте галочку на Regex match.
Теперь на всех сайтах (без HTTPS) вместо заголовка будет No Title:
Вставляем произвольную строку после тэга body (будет первой строкой в тексте). Request header меняем на Response body. Меняем
Поставьте галочку на Regex match.
В правом верхнем углу (зависит от вёрстки) появляется надпись «I am cool!». Можно вставлять CSS, JavaScript код, любой текст – что угодно. Можно вообще всё из страницы удалить, а потом заполнить её своим содержимым – всё зависит от вашей фантазии.
Была идея чуть модифицировать каждую форму, чтобы данные отправлялись на оригинальный сервер и на сервер атакующего (реализовать мульти submit для каждой формы). Но рассудив, что если передоваемые данные не зашифрованные и мы имеем к ним доступ – то мы и так их видим, ни на какой сервер их отправлять не нужно. Тем не менее, если кому-то понадобиться, здесь реально работающий пример отправки данных из одной формы сразу на несколько серверов.
5. Подцепление на BeEF
Чтобы начать использовать возможности BeEF, нам нужно внедрить в HTML код JavaScript файл, обычно это строка вида:
Связанные статьи:
Рекомендуется Вам:
9 комментариев to Инструкция по Ettercap: атака человек-посередине (MitM), перехват паролей, обход HSTS, подмена данных на лету, использование пользовательских фильтров и плагинов, подцепление на BeEF, заражение бэкдорами
Тестил на своем смартфоне,все што по HTTPS просто нет конекта(KeteMobile,Viber).В Браузере на гугл говорит HTTP:google.com страница не найдена.Тоесть все работает(MITM),а результата нет.
А почему Ettercap 0.8.2 может не показывать в списке Hosts устройства?
дима это было б вообще круто а зачем же тогад nmap 🙂 ? ВОТ еслибы тут было описано как не только сниферить и пароли угонять но и закидовать и запускать батники на жертве это быЛО ФНТАСТИЧЕСКИ 🙂 . закинул батник с загрузчиком линя и такое чудо запустил ВО жертва офигеет после перезагрузки отт черНОго экрана и надписи boot ))))
HTTPS не коннектится, так как нужен сертификат burp
Добрый день, подскажите, как обойти антивирус при совершение атаки MitM. Например, если у пользователя установлен NOD32, то он сообщает об атаке и блокирует ее, у атакуемого интернет работает исправно, но я не могу собрать ни какую информацию….
Видимо, в антивирус встроено определение ARP-спуфинга.
Можно попробовать ICMP, DHCP или DNS спуфинг (поддерживает MITMf). bettercap 1.6 поддерживает ICMP спуфинг.
Если есть доступ к админке роутера, то можно поменять настройки DNS сервера и выполнить атаку с фальшивым DNS.
Опять же, при доступе к админке роутера, можно настроить маршрутизацию через компьютер атакующего.
Если клиент подключён по Wi-Fi, то тут ещё букет атак: поднять Злого Двойника и попытаться подключить клиента к нему; если есть доступ к админке роутера – отключить там Wi-Fi модуль, и поднять вместо него Злого Двойника; или настроить роутер быть повторителем оборудования атакующего и на оборудовании атакующего делать сниффинг.
Вариант на основе социальной инженерии: бесконечный ARP-спуфинг, пока пользователь не подумает, что антивирус сбрендил и не отключить эту функцию.
В общем вариантов много – большой простор для творчества. Подобные защиты антивирусов – это защита от совсем школьников, чтобы не баловались. В конце концов, если что-то действительно важное, можно сделать врезку в Интернет-кабель на лестничной площадке…
Врезка это конечно очень дерзкое дело, спасибо за информацию, будем пробовать.
Ettercap перестал видить роутер,как решить этот момент?Видит только один девайс.
Для sslstrip надо — это: apt install python-twisted-web !!