- Инструменты Kali Linux
- Список инструментов для тестирования на проникновение и их описание
- Bettercap 1.6
- Описание Bettercap
- Особенности bettercap
- Справка по Bettercap
- Руководство по Bettercap
- Модульные прозрачные прокси
- Примеры работы Bettercap с прозрачными прокси
- Встроенный HTTP сервер
- Примеры запуска Bettercap
- Установка Bettercap
- Инструменты Kali Linux
- Список инструментов для тестирования на проникновение и их описание
- bettercap
- Описание bettercap
- Справка по bettercap
- Базовые команды bettercap
- Руководство по bettercap
- Каплеты (Caplets)
- Модули bettercap
- events.stream
- ticker
- api.rest
- update.check
- net.recon
- net.probe
- net.sniff
- syn.scan
- arp.spoof
- dhcp6.spoof
- dns.spoof
- packet.proxy
- tcp.proxy
- tcp.modules
- http.proxy
- https.proxy
- http.modules
- http.server
- mac.changer
- Примеры запуска bettercap
- Установка bettercap
Инструменты Kali Linux
Список инструментов для тестирования на проникновение и их описание
Bettercap 1.6
Внимание: данная статья является архивной. Новой версии bettercap 2.x посвящена страница https://kali.tools/?p=3870
Описание Bettercap
bettercap — это полный, модульный, портативный и легко расширяемый инструмент и фреймворк для MITM с диагностическими и наступательными функциями всех родов, которые могут вам понадобиться для выполнения атаки человек-посередине.
Существует ли полный, модульный, портативный и простой в расширении инструмент для атаки MITM?
Если ваш ответ “ettercap”, то давайте присмотримся к нему внимательнее:
- ettercap был отличным инструментом, но его время прошло.
- фильтры ettercap не работают в большинстве случаев, являются устаревшими и трудно реализуемыми из-за особенностей языка в котором они сделаны.
- ettercap чертовски нестабилен на больших сетях … попробуйте запустить обнаружение хостов на больших сетях — больших чем обычные /24
- да, вы можете видеть подключения и сырой материал pcap, да, отличная игрушка, но будучи профессиональным исследователем вы хотите видеть только релевантный материал.
- если вы не являетесь разработчиком на C/C++, вы не можете легко расширить ettercap или сделать ваш собственный модуль.
В действительности вы могли бы использовать более одного инструмента … может быть arpspoof для непосредственного отравления (poisoning), mitmproxy для перехвата HTTP материала и внедрения вашей полезной нагрузки и т. д. … Не знаю как вы, а автор bettercap терпеть не может когда ему приходится использовать множество инструментов просто для выполнения единичной атаки, особенно когда их все нужно слаженно работать на одном дисрибутиве — ведь при этом нарушается принцип KISS.
Поэтому и был создан bettercap …
Особенности bettercap
- Динамическое обнаружение хостов + ARP Spoofing
Вы можете нацелиться на всю сеть или на единичный известный адрес, это не важно, функции bettercap по спуфингу arp и его агент по обнаружению нескольких хостов сделают за вас грязную работу.
Просто запустите инструмент и ожидайте пока он делает свою работу … и, конечно, новые машины, которые появились в сети, будут обнаружены и проспуфлены автоматически.
Если ваш роутер имеет встроенную защиту от ARP сфуфинга, то не волнуйтесь, вы можете побороть это в полудуплексном режиме (half duplex).
- Сниффер учётных данных
Встроенный сниффер в настоящее время в состоянии анализировать и печатать следующую информацию:
- посещённые URL.
- посещённые хосты HTTPS.
- отправленные методом HTTP POST данные.
- аутентификации HTTP Basic и Digest.
- HTTP кукиз.
- учётные данные FTP.
- учётные данные IRC.
- учётные данные POP, IMAP и SMTP.
- учётные данные NTLMv1/v2 ( HTTP, SMB, LDAP и т.п. ).
- учётные данные протокола DICT.
- учётные данные MPD.
- учётные данные NNTP.
- сообщения и учётные данные DHCP.
- учётные данные входа REDIS.
- учётные данные RLOGIN.
- учётные данные SNPP.
- И другое!
Автор: Simone ‘evilsocket’ Margaritelli*
Справка по Bettercap
ГЛАВНЫЕ:
-I, —interface ИНТЕРФЕЙС
Имя сетевого интерфейса — по умолчанию: eth0 [зависит от ОС]
—use-mac АДРЕС
Изменяет MAC адрес интерфейса на это значение перед выполнением атаки.
—random-mac
Изменяет MAC адрес интерфейса на случайное значение перед выполнением атаки.
-G, —gateway АДРЕС
Задать адрес шлюза вручную, если не задан, то будет получен и использован текущий шлюз.
-T, —target ADDRESS1,ADDRESS2
Целевые IP адреса, если не заданы, то целью будет вся подсеть.
—ignore ADDRESS1,ADDRESS2
Игнорировать эти адреса, если они найдены во время поиска целей.
—-no-discovery
Не искать активно хосты, просто использовать текущий ARP cache, по умолчанию отключён ( false ).
—no-target-nbns
Отключить преобразование хоста NBNS
—packet-throttle ЧИСЛО
Количество секунд (может быть десятичным числом) для ожидания между отправкой каждого пакета.
—check-updates
Проверить, доступны ли какие-либо обновления и выйти.
-h, —help
Показать доступные опции.
ВЕДЕНИЕ ЖУРНАЛА:
-O, —log LOG_FILE
Записать все сообщения в файл, если не установлена, то все сообщения будут только выведены в шелл.
—log-timestamp
Включить запись логов с временными отметками для каждой строки, по умолчанию отключено.
-D, —debug
—silent
Подавить каждое сообщение, если это не ошибка или предупреждение, по умолчанию false .
SPOOFING:
-S, —spoofer NAME
Модуль, используемый для спуфинга, доступны: ARP , ICMP , NONE — по умолчанию: ARP .
—no-spoofing
Отключить спуфинг, псевдоним для —spoofer NONE .
—full-duplex
Включить режим дуплекса.
—kill
Вместо перенаправления пакетов, этот переключатель убъёт подключения целей.
SNIFFING:
-X, —sniffer
-L, —local
Парсить пакеты идучие от/к адресу этого компьютера ( ВНИМАНИЕ: Установит -X в true ), по умолчанию отключено ( false ).
—sniffer-source ФАЙЛ
Загрузить пакеты из указанного PCAP файла вместо интерфейса ( включит сниффер ).
—sniffer-output ФАЙЛ
Сохранить все пакеты в указанный PCAP файл ( включит сниффер ).
—sniffer-filter ВЫРАЖЕНИЕ
Настроит сниффер испольовать этот BPF фильтер ( включит сниффер ).
-P, —parsers ПАРСЕР
Список парсеров для включения, разделены запятыми, «*» для всех ( ВНИМАНИЕ: Опция -X автоматически задействует все ), доступны: FTP, MYSQL, HTTPAUTH, SNMP, REDIS, POST, NTLMSS, SNPP, HTTPS, DHCP, TEAMVIEWER, IRC, MPD, WHATSAPP, MAIL, RLOGIN, URL, NNTP, PGSQL, COOKIE, DICT — по умолчанию: *
—disable-parsers ПАРСЕРЫ
Разделённый запятыми список парсеров для отключения ( ПРИМЕЧАНИЕ: Установит -X на true )
—custom-parser ВЫРАЖЕНИЕ
Использовать пользовательское регулярное выражение для захвата и показа подслушанных данных (ВНИМАНИЕ: установит -X на true ).
ПРОКСИ:
—tcp-proxy
Включить TCP прокси ( требует указание других —tcp-proxy-* опций ).
—tcp-proxy-module МОДУЛЬ
Модуль Ruby для загрузки TCP прокси.
—tcp-proxy-port ПОРТ
Установить локальный порт TCP прокси, по умолчанию 2222 .
—tcp-proxy-upstream АДРЕС:ПОРТ
Установить адрес и порт исходящего сервера TCP прокси.
—tcp-proxy-upstream-address АДРЕС
Установить адрес сервера исходящего TCP прокси.
—tcp-proxy-upstream-port ПОРТ
Установить порт сервера исходящего TCP прокси.
—proxy
Включить HTTP прокси и перенаправлять все HTTP запросы на него, по умолчанию отключён ( false ).
—proxy-port ПОРТ
Установить порт прокси HTTP, по умолчанию 8080 .
—allow-local-connections
Разрешить прямые подключения к экземпляру прокси, по умолчанию отключено ( false ).
—no-sslstrip
—log-http-response
Записывать в журнал HTTP ответы.
—no-http-logs
Подавлять запись логов HTTP запросов и ответов.
—proxy-module МОДУЛЬ
Модуль прокси Ruby для загрузки, может быть пользовательским файлом или одним из следующих: injectcss , injecthtml , injectjs .
—http-ports ПОРТ1,ПОРТ2
Список разделённых запятой HTTP портов для перенаправления на прокси, по умолчанию 80 .
—proxy-upstream-address АДРЕС
Если установлен, только запросы пришедшие с этого адреса сервера будут перенаправлены на HTTP/HTTPS прокси.
—proxy-https
Включить HTTPS прокси и перенаправлять все HTTPS запросы на него, по умолчанию отключён ( false ).
—proxy-https-port ПОРТ
Установить порт прокси HTTPS, по умолчанию 8083 .
—proxy-pem ФАЙЛ
Использовать пользовательский файл CA сертификата PEM для прокси HTTPS, по умолчанию
—https-ports PORT1,PORT2
Разделённый запятой список HTTPS портов для перенаправления на прокси, по умолчанию 443 .
—custom-proxy АДРЕС
Использовать пользовательский исходящий HTTP прокси вместо встроенного.
—custom-proxy-port ПОРТ
Указать порт пользовательского исходящего прокси HTTP, по умолчанию 8080 .
—custom-https-proxy АДРЕС
Использовать пользовательский исходящий HTTPS прокси вместо встроенного.
—custom-https-proxy-port ПОРТ
Указать порт пользовательского исходящего прокси HTTPS, по умолчанию 8083 .
—custom-redirection ПРАВИЛО
Применить пользовательское перенаправление порта, формат правила PROTOCOL ORIGINAL_PORT NEW_PORT . Например TCP 21 2100 будет перенаправлять весь TCP трафик, идущий на порт 21, к порту 2100.
СЕРВЕРЫ:
—httpd
Включить HTTP сервер, по умолчанию отключён ( false ).
—httpd-port ПОРТ
Установить порт HTTP сервера, по умолчанию 8081 .
—httpd-path ПУТЬ
Установить путь HTTP сервера, по умолчанию ./ .
—dns ФАЙЛ
Включить DNS сервер и использовать этот файл в качестве таблицы преобразования хостов.
—dns-port ПОРТ
Установить порт сервера DNS, по умолчанию 5300 .
—html-file ПУТЬ
Судя по всему, внедрение HTML файла в код страницы
Руководство по Bettercap
Страница man отсутствует.
Модульные прозрачные прокси
Модульные прозрачные прокси HTTP и HTTPS могут быть запущены с аргументом —proxy, по умолчанию ничего не происходит — только записываются HTTP запросы, но если вы укажите аргумент —proxy-module вы сможете загрузить ваши собственные модули и манипулировать HTTP трафиком по своему желанию.
Вы можете найти примеры модулей в отдельном репозитории.
Примеры работы Bettercap с прозрачными прокси
Включить прокси на порту по умолчанию ( 8080 ) без модулей ( совершенно бесполезно ):
Включить прокси и использовать пользовательский порт:
Включить прокси и использовать модуль hack_title.rb:
Отключить спуфер и включить прокси ( автономный режим прокси ):
Включить HTTPS прокси с создаваемым в реальном времени сертификатом:
Включить HTTPS прокси с пользовательским сертификатом .pem:
Встроенный HTTP сервер
Вы хотите сервер с вашими пользовательскими файлами javascript в сети? Может вы хотите вставить пользовательские скрипты или изображения в HTTP ответы используя модуль прозрачного прокси, но у вас нет публичного сервера для этого? Чувак, не волнуйся.
Встроенный HTTP сервер поставляется с bettercap, он позволяет иметь сервер с собственным контентом на вашей машине без установки и настройке другого программного обеспечения вроде Apache, nginx или lighttpd.
Вы можете использовать прокси модуль примерно так:
И затем используйте его для инжекта файла js в каждый HTTP ответ в сети, использование самого bettercap как сервера для файла:
Примеры запуска Bettercap
Режим сниффера по умолчанию, все парсеры включены:
Включить сниффер и загрузить только некоторые парсеры:
Включить сниффер + все парсеры и парсить также локальный трафик:
Включить сниффер + все парсеры и дампить всё в файл pcap:
Как насчёт сохранения только HTTP трафика в pcap файл?
Установка Bettercap
Установка в Kali Linux
Установка в Debian, Ubuntu, Mint
Все зависимости будут автоматически установлены через систему GEM, в некоторых случаях вам понадобится установить некоторые системные зависимости, чтобы всё работало:
Стабильный релиз ( GEM )
Релиз в разработке
После установки bettercap, сразу можно перейти к работе так:
Установка в BlackArch
Программа предустановлена в BlackArch. Дополнительно следует установить:
Информация об установке в другие операционные системы будет добавлена позже.
Источник
Инструменты Kali Linux
Список инструментов для тестирования на проникновение и их описание
bettercap
Описание bettercap
Программа bettercap версий 2.x и более поздних является продолжением bettercap предыдущего поколения, которое было остановлено на 1.6.x. Архивная страница, посвящённая ветке 1.6: https://kali.tools/?p=345
Данная страница описывает bettercap 2.x — актуальную в данный момент версию.
bettercap — это универсальная программа для сетевых атак и мониторинга.
Возможности bettercap включают в себя:
- ARP-спуфинг и сниффинг
- мониторинг сети
- мониторинг WiFi и BLE
- выполнение атак в беспроводных сетях
- выполнение атак человек-посередине с поддержкой разнообразных приёмов: обход HTTPS, DNS спуфинг, запуск веб-сервера и прочее
- поддержка caplets — каплетов, файлов, позволяющих описать скриптовым языком сложные и автоматизированные атаки
- работает на Linux, macOS, Windows, Android, ARM
Автор: Simone ‘evilsocket’ Margaritelli*
Справка по bettercap
bettercap работает в интерактивном режиме — она поддерживает ввод команд, которые включают/отключают модули, выполняют атаки, выводят информацию. Также имеется несколько опций, которые можно указать при запуске программы.
Базовые аргументы командной строки:
аргумент | описание |
---|---|
-autostart МОДУЛИ | Разделённый запятой список модулей для автоматического старта при запуске программы. (по умолчанию это events.stream, net.recon, update.check ) |
-caplet ИМЯ_ФАЙЛА | Считать команды из этого файла и выполнить их в интерактивной сессии. |
-eval КОМАНДЫ | В интерактивной сессии запустить одну или более команд, разделённых ; — это используется для установки переменных через командную строку. |
-iface ИНТЕРФЕЙС | Сетевой интерфейс для привязки, если не указан, то будет автоматически выбран дефолтный интерфейс (принимаются имя интерфейса, ip или mac-адрес). |
-no-history | Отключить файл истории интерактивной сессии /.bettercap.history . |
-no-colors | Отключить цветные эффекты вывода. |
-env-file ИМЯ_ФАЙЛА | Если найдены, загрузить переменные окружения из этого файла, укажите пустое имя, если хотите отключить дефолтные переменные коружения. (по умолчанию /bettercap.env ) |
-cpu-profile ИМЯ_ФАЙЛА | Записывать файл профиля cpu (используется для отладки и бенчмаркинга). |
-mem-profile ИМЯ_ФАЙЛА | Записывать файл профиля памяти (используется для отладки и бенчмаркинга). |
-silent | Подавить все логи, которые не являются ошибками. |
-debug | Включить сообщения отладки. |
Если опция -caplet не указана, bettercap будет запущен в интерактивном режиме, позволяющем вам вручную стартовать и останавливать модули, изменять опции и применять на лету новые правила файервола.
Чтобы узнать свои возможности, наберите help и вам будет показано меню общей справки, вы можете получить справку по определённому модулю, используя help имя-модуля (например, попробуйте help net.recon), чтобы увидеть, какие модули запущены и изменять их настройки в любое время, вы можете использовать интерактивные команды.
Чтобы напечатать все переменные и их значения, вы можете использовать get * или get имя-переменной, чтобы получить единичную переменную (попробуйте get gateway.address), чтобы установить новое значение, вы можете выполнить set имя-переменной новое-значение (значение «» очистит содержимое переменное), в типичной сессии переменные выглядят примерно так:
Базовые команды bettercap
Эти базовые команды доступны для выполнения в интерактивном режиме:
команда | описание |
---|---|
help / help МОДУЛЬ | Вывести список доступных команд, если имя модуля не указано, или показать справку для определённого модуля. |
active | Показать информацию об активных модулях. |
quit / q | Закрыть сессию и выйти. |
sleep СЕКУНДЫ | Сон на заданное количество секунд. |
get ПЕРЕМЕННАЯ | Получить значение ПЕРЕМЕННОЙ , используйте * для всех. |
set ПЕРЕМЕННАЯ ЗНАЧЕНИЕ | Установить значение ПЕРЕМЕННОЙ на ЗНАЧЕНИЕ . |
read ПЕРЕМЕННАЯ ЗАПРОС | Показать ЗАПРОС чтобы спросить пользователя ввести то, что будет сохранено внутри ПЕРЕМЕННОЙ . |
clear | Очистить экран . |
include CAPLET | Загрузить и запустить этот caplet (каплет) в текущую сессию. |
!COMMAND | Выполнить команду оболочки и напечатать её вывод. |
alias MAC ИМЯ | Назначить псевдоним заданной конечной точки указанной по её MAC адресу (будет сохранено в файле и использовано для команды net.show . |
Руководство по bettercap
Страница man отсутствует.
Каплеты (Caplets)
Каплеты (Caplets) или .cap файлы — это мощный способ записать в скрипт интерактивные сессии bettercap, это как файлы .rc для Metasploit. Актуальные каплеты и модули находятся в этом репозитории, настоятельно рекомендуется ознакомится с концепцией каплетов, чтобы до конца понимать, какие возможности даёт bettercap.
Чтобы скачать все каплеты за раз:
Каплеты можно использовать двумя способами.
Из интерактивной сессии
Каждый раз, когда вы печатаете команду, которая не распознаётся интерактивным сеансом, bettercap будет пытаться загрузить соответствующий файл каплета, например:
В качестве обычного поведения программы это должно было бы вызвать следующую ошибку, поскольку reload не является знакомой командой:
Давайте попробуем создать файл reload.cap в нашей текущей папке, в нёго запишем следующие строки:
Если мы попробуем вновь выполнить reload arp.spoof, мы увидем, что сеанс больше не печатает снова это же самое сообщение об ошибки, но вместо этого выполняет строки:
Как вы уже поняли, этим способом вы можете задавать пользовательские команды, $0 будет заменён на первый аргумент, $1 на второй и так далее.
Порядок загрузки следующий:
- ./reload.cap
- ./caplets/reload.cap
- Любая папка в переменной окружения $CAPSPATH, если она указана (значения разделяются двоеточием (:) как в $PATH).
Из командной строки
Используя аргумент командной строки -caplet, например:
Этот пример загрузит файл example.cap для текущей папки. Для настройки каплета можно использовать дополнительные параметры, например, следующая строка команды будет спуфить и печатать HTTP запросы для целой сети:
Эта будет нацелена на определённый IP, поскольку будет переназначена переменная arp.spoof.targets:
Модули bettercap
Имеются следующие модули:
- Основные
- events.stream
- ticker
- api.rest
- update.check
- Bluetooth с низким энергопотреблением
- ble.recon / enum / write
- 802.11
- wifi.recon / deauth / ap
- Ethernet и IP
- net.recon
- net.probe
- net.sniff
- syn.scan
- wake on lan
- Спуферы
- arp.spoof
- dhcp6.spoof
- dns.spoof
- Прокси
- packet.proxy
- tcp.proxy
- модули
- http.proxy
- https.proxy
- модули
- Сервера
- http.server
- Утилиты
- mac.changer
- gps
events.stream
Этот модуль включён по умолчанию, он отвечает за информирование о событиях (логи, найдены новые хосты и т. д.) во время интерактивной сессии.
Команды
команда | описание |
---|---|
events.stream on | Запустить поток событий. |
events.stream off | Остановить поток событий. |
events.show ЛИМИТ? | Показать поток событий ( ЛИМИТ — это опциональный параметр ). |
events.waitfor TAG TIMEOUT? | Ожидание события с заданным тегом, либо всегда, либо в течение определённого таймаута в секундах. |
events.ignore ФИЛЬТР | События с идентификатором, соответствующим этому фильтру, не будут показаны (используйте несколько раз, чтобы добавить больше фильтров). |
events.include ФИЛЬТР | Используется для удаления фильтров, переданных командой events.ignore. |
events.clear | Очистить буфер потока событий. |
Параметры
параметр | значение по умолчанию | описание |
---|---|---|
events.stream.output | Если не пустой, события будут записаны в этот файл вместо стандартного вывода. |
Примеры
Запустить bettercap без цвета и эффектов в терминали и записывать события в файл
Показывать каждое событие:
Показать последние 5 событий, заснуть на одну секунду и очистить буфер:
Начать обнаружение устройств BLE и ожидать, пока хотя бы один замечен:
То же самое, но с таймаутом в 10 секунд:
Игнорировать события от WiFi клиентов во время использования одного из модулей wifi:
Запустить bettercap при этом отключив события net.recon модуля (найдены новые конечные точки, потеряны конечные точки и т. п.) заснуть на одну секунду и затем включить их обратно (используется для подавления начальных сообщений обнаружения):
ticker
Этот модуль может использоваться для периодического выполнения заданного набора команд в интерактивной сессии.
Команды
команда | описание |
---|---|
ticker on | Запустить ticker. |
ticker off | Остановить ticker. |
Параметры
параметр | значение по умолчанию | описание |
---|---|---|
ticker.commands | clear; net.show | Список команд, разделённых ; . |
ticker.period | 1 | Цикл тикера в секундах. |
Примеры
Запустить зондирование хостов, очистить экран и вывести обнаруженные конечные точки каждую секунду (будет использовать дефолтные параметры):
Продолжать деаутентификацию клиентов от точки доступа с BSSID DE:AD:BE:EF:DE:AD каждые пять секунд:
api.rest
REST API для скрипта и/или взаимодействия с сеансом.
Команды
команда | описание |
---|---|
api.rest on | Запустить REST API сервер. |
api.rest off | Запустить REST API сервер. |
Параметры
параметр | значение по умолчанию | описание |
---|---|---|
api.rest.certificate | API TLS сертификат (будет сгенерирован автоматически). | |
api.rest.key | API TLS ключ. | |
api.rest.address | Адрес на который привязать API REST сервер. | |
api.rest.port | 8083 | Порт для привязки API REST сервера. |
api.rest.username | Обязательное имя пользователя для API HTTP basic аутентификации. | |
api.rest.password | Обязательный пароль для API HTTP basic аутентификации. | |
api.rest.websocket | false | Если true маршрут /api/events будет доступен как веб-сокет конечной точки вместо HTTPS. |
Маршруты
Клиенты могут аутентифицироваться с использованием HTTP basic аутентификацией, это доступные API маршруты.
GET /api/session
Получить JSON состояния текущей сессии, пример ответа:
GET /api/session/ble
Получить JSON устройства BLE в текущей сессии, пример ответа:
- Mac адрес, например GET /api/session/ble/00:AA:BB:CC:DD:33 — вернёт информацию о единичной конечной точке с mac-адресом 00:AA:BB:CC:DD:33 (клиент Adafruit Bluefruit LE из предыдущего вывода).
GET /api/session/env
Получить JSON значений переменных окружения в текущей сессии, пример ответа:
GET /api/session/gateway
Получить JSON шлюза интерфейса текущей сессии, пример ответа:
GET /api/session/interface
Получить JSON главного интерфейса (wifi/lan) текущей сессии, пример ответа:
GET /api/session/lan
Получить JSON lan устройств текущей сессии, пример ответа:
- Mac-адрес, например GET /api/session/lan/00:AA:BB:CC:DD:11 — вернёт информацию о единичной конечной точке lan с mac-адресом 00:AA:BB:CC:DD:11 (из приведённого выше вывода это pihole).
GET /api/session/options
Получить JSON набора опций текущей сессии, пример ответа:
GET /api/session/packets
Получить JSON трафика пакетов текущей сессии, пример ответа:
GET /api/session/started-at
Получить JSON времени запуска текущей сессии, пример ответа:
GET /api/session/wifi
Получить JSON wifi устройств (клиентов и точек доступа) в текущей сессии, пример ответа:
- Mac-адрес, например GET /api/session/wifi/00:AA:BB:CC:DD:22 — вернёт информацию о единичной конечной точке wifi с mac-адресом 00:AA:BB:CC:DD:22 (из вывода выше это подключённый клиент).
POST /api/session
Отправляет в интерактивную сессию команду методом POST, ожидается, что будет отправлен объект JSON следующего вида:
При этом ответом будет:
GET /api/events
Возвращает список событий ( опциональный параметр n GET ограничит количество ):
DELETE /api/events
Очистит буфер событий.
update.check
Модуль для проверки обновлений bettercap
Команды
команда | описание |
---|---|
update.check on | Проверяет последнюю доступню стабильную версию и сравнивает её с используемой. |
Этот модуль ответственен за обнаружение устройств Bluetooth Low Energy.
Команды
команда | описание |
---|---|
ble.recon on | Запустить обнаружение устройств Bluetooth Low Energy. |
ble.recon off | Запустить обнаружение устройств Bluetooth Low Energy. |
ble.show | Показать обнаруженные устройства Bluetooth Low Energy. |
ble.enum MAC | Перечислить службы и характеристики заданного BLE устройства. |
ble.write MAC UUID HEX_DATA | Записать HEX_DATA буфер в BLE устройство с указанным MAC -адресом, в характеристики с заданным UUID . |
Примеры
Подключиться, перечислить и считать характеристики с BLE устройства 04:52:de:ad:be:ef:
Записать байты ff ff ff ff ff ff ff ff to в BLE устройство 04:52:de:ad:be:ef на его характеристики с UUID 234bfbd5e3b34536a3fe723620d4b78d:
- ble.enum только работает один раз на выполнение
- неполная поддержка для macOS
- совсем не поддерживается на Windows.
Модули wifi.* работают с WiFi интерфейсом, поддерживающим режим монитора и инъекцию пакетов, они используются для монитора и выполнения беспроводных атак на 802.11.
Команды
команда | описание |
---|---|
wifi.recon on | Запустить обнаружение беспроводных 802.11 базовых станций. |
wifi.recon off | Остановить обнаружение беспроводных 802.11 базовых станций. |
wifi.recon BSSID | Установить фильтр базовых станций 802.11 на. |
wifi.recon clear | Удалить фильтр базовых станций 802.11. |
wifi.deauth BSSID | Запустить атаку деаутентификации 802.11, если указан BSSID, то будет деаутентифицирован каждый клиент, в противном случае только выбранный клиент. |
wifi.show | Показать текущий список беспроводных станций (по умолчанию сортировка по RSSI). |
wifi.recon.channel КАНАЛ | Разделённый запятой список каналов, по которым прыгать. |
wifi.recon.channel clear | Включить прыгание по всем поддерживаемым каналам. |
wifi.ap | Внедрить маяки управления фальшивкой, чтобы создать мошенническую точку доступа ( требует запуска wifi.recon ). |
Параметры
параметр | значение по умолчанию | описание |
---|---|---|
wifi.hop.period | 250 | Если включено прыганье по каналам (пустое значение wifi.recon.channel ), это время в миллисекундах через которое алгоритм будет менять каналы (оно будет удвоено, если оба диапазона частот 2.4 и 5.0 доступны). |
wifi.source.file | Если установлена wifi модуль будет считывать из файла pcap, а не с аппаратного интерфейса. | |
wifi.skip-broken | true | Если true, dot11 пакеты с некорректной контрольной суммой будут пропущены. |
wifi.ap.ssid | FreeWifi | SSID фальшивой точки доступа. |
wifi.ap.bssid | BSSID фальшивой точки доступа. | |
wifi.ap.channel | 1 | Канал фальшивой точки доступа. |
wifi.ap.encryption | true | Если true, фальшивая точка доступа будет использовать WPA2, в противном случае результатом будет открытая ТД. |
Примеры
Используя модули ticker и wifi.recon создать WiFi сканер (выполнять переход по каналам на каждой поддерживающейся частоте):
Вести разведку только на каналх 1, 2 и 3:
Деаутентифицировать клиентов от точки доступа с BSSID DE:AD:BE:EF:DE:AD каждые пять секунд:
Создание поддельной точки доступа «Banana» с BSSID DE:AD:BE:EF:DE:AD на 5 канале без шифрования:
net.recon
Этот модуль включён по умолчанию, он ответственен за периодическое считывание ARP кэша чтобы мониторить новые хосты в сети.
Команды
команда | описание |
---|---|
net.recon on | Запустить обнаружение сетевых хостов. |
net.recon off | Остановить обнаружение сетевых хостов. |
net.show | Показать список кэша хостов (по умолчанию сортировка по ip). |
net.show by seen | Показать список кэша хостов (сортировка по когда виден последний раз). |
net.show by sent | Показать список кэша хостов (сортировка по отправленным пакетам). |
net.show by rcvd | Показать список кэша хостов (сортировка по полученным пакетам). |
net.probe
Этот модуль продолжает зондирование новых хостов в сети, отправляя фиктивные UDP пакеты каждому возможному IP в подсети.
Команды
команда | описание |
---|---|
net.probe on | Запустить зонд. |
net.probe off | Остановить зонд. |
Параметры
параметр | значение по умолчанию | описание |
---|---|---|
net.probe.throttle | 10 | Если больше, чем 0, пакеты зондирования будут ограничены этим значением в миллисекундах. |
net.sniff
Сниффер сетевых пакетов.
Команды
команда | описание |
---|---|
net.sniff on | Запустить сниффер пакетов. |
net.sniff off | Остановить сниффер пакетов. |
net.sniff stats | Напечатать конфигурацию и статистику сессии снифера пакетов. |
Параметры
параметр | значение по умолчанию | описание |
---|---|---|
net.sniff.output | Если установлено, сниффер запишет захваченные пакеты в файл pcap. | |
net.sniff.source | Если установлено, сниффер считает этот pcap файл вместо текущего интерфейса. | |
net.sniff.verbose | true | Если true, каждый захваченных и пропарсенный пакет будет отправлен в поток событий для отображения, в противном случае, там будут только пропарсенные на уровне приложений (sni, http, и т.д.). |
net.sniff.local | false | Если true, то будут учитываться только пакеты с/на этот компьютер, другие будут пропущены. |
net.sniff.filter | not arp | BPF фильтр для сниффера. https://biot.com/capstats/bpf.html |
net.sniff.regexp | Если установлено, будут рассматриваться только пакеты с полезной нагрузкой, соответствующей регулярному выражению. |
Примеры
Каплет local-sniffer.cap будет сниффить, парсить и печатать все пакеты на локальной машине:
В каплете wpa_handshake.cap сниффер используется для захвата WPA2 рукопожатия в то время как пользователя деаутентифицирует клиентов:
syn.scan
Модуль для выполнения SYN сканирования портов, обнаруженные октрытые порты записываются как tcp-ports в поле meta рядом с информацией о конечных точках (показывается при выполнении net.show).
Команды
команда | описание |
---|---|
syn.scan IP-ДИАПАЗОН НАЧАЛЬНЫЙ-ПОРТ КОНЕЧНЫЙ-ПОРТ? | Выполняет syn сканирование портов в отношении IP адреса внутри указанного диапазона портов. |
Примеры
Сканировать порты с 1 по 1000 единичного IP:
Сканировать порт 22 нескольких адресов:
Сканировать порты с 1 по 10000 всей подсети:
Модуль отправляет широковещательные Wake On LAN пакеты или на определённый MAC.
Команды
команда | описание |
---|---|
wol.eth MAC | Отправить WOL как сырой ethernet пакет типа 0x0847 (если MAC не указан, то будет использоваться ff:ff:ff:ff:ff:ff ). |
wol.udp MAC | Отправить WOL как широковещательный IPv4 пакет на UDP порт 9 (если MAC не указан, то будет использоваться ff:ff:ff:ff:ff:ff ). |
arp.spoof
Этот модуль спуфит выбранные хосты в сети, используя сконструированные ARP пакеты.
Команды
команда | описание |
---|---|
arp.spoof on | Запустить ARP спуфер. |
arp.ban on | Запустить ARP спуфер в режиме бана, означает, что подключение для цели(ей) не будет работать. |
arp.spoof/ban off | Остановить ARP спуфер. |
Параметры
параметр | значение по умолчанию | описание |
---|---|---|
arp.spoof.targets | Разделённый запятой список MAC адресов, IP адресов, диапазонов IP или псевдонимов для спуфинга (список поддерживаемых форматов диапазонов). | |
arp.spoof.whitelist | Разделённый запятой список MAC адресов, IP адресов, диапазонов IP или псевдонимов для пропуска во время спуфинга. |
Примеры
Бан 192.168.1.6 адреса от сети:
Спуфить 192.168.1.2, 192.168.1.3 и 192.168.1.4:
dhcp6.spoof
Отвечает на DHCPv6 сообщения, обеспечивая жертвы link-local IPv6 адресмами и настраивая атакующий хост в качестве дефолтного DNS сервера (как описано здесь), должен использоваться совместно с модулем dns.spoof.
Команды
команда | описание |
---|---|
dhcp6.spoof on | Запустить в фоне DHCPv6 спуфер. |
dhcp6.spoof off | Остановить в фоне DHCPv6 спуфер. |
Параметры
параметр | значение по умолчанию | описание |
---|---|---|
dhcp6.spoof.domains | microsoft.com, goole.com, facebook.com, apple.com, twitter.com | Разделённые запятой значения доменных имён для спуфинга. |
Примеры
Следующий каплет mitm6.cap выполняет полную DHCPv6 атаку против загружаемой машины Windows 10:
dns.spoof
Отвечает на DNS сообщения спуфленными (подменёнными) ответами.
Команды
команда | описание |
---|---|
dns.spoof on | Запустить в фоне DNS спуфер. |
dns.spoof off | Остановить в фоне DNS спуфер. |
Параметры
параметр | значение по умолчанию | описание |
---|---|---|
dns.spoof.domains | * | Разделённые запятой значения доменных имён для спуфинга или * для всех. |
dns.spoof.address | IP адрес, куда указывать в ответах. | |
dns.spoof.all | false | Если true этот модуль будет отвечать на каждый DNS запрос, в противном случае, он будет отвечать только на те, которые нацелены на локальный ПК. |
Примеры
Каждый DNS запрос, пришедший с этого компьютера для домена example.com будет преобразован на адрес 1.2.3.4:
packet.proxy
Модуль только для Linux, который полагается на NFQUEUEs чтобы активно фильтровать пакеты, используя нативные плагины Go (плагины для этого модуля могут быть найдены в этом репозитории).
ВАЖНО
Чтобы скомпилировать плагин правильно, его файлы .go должны быть скопированы во внутрь папки bettercap с исходным кодом и скомпилированы там, в противном случае у вас могут возникнуть проблемы компилирования из-за конфликта зависимостей с папкой поставщика.
Команды
команда | описание |
---|---|
packet.proxy on | Запустить пакетный прокси на основе NFQUEUE. |
packet.proxy off | Остановить пакетный прокси на основе NFQUEUE. |
Параметры
параметр | значение по умолчанию | описание |
---|---|---|
packet.proxy.queue.num | 0 | NFQUEUE номер для создания и привязки. |
packet.proxy.chain | OUTPUT | Название цепи правил iptables. |
packet.proxy.rule | Дополнительное правило iptables чтобы сделать очередь более селективной (напр. —destination 8.8.8.8 ). | |
packet.proxy.plugin | Файл плагина Go для загрузки и вызова для каждого пакета. |
Плагины
Параметр packet.proxy.plugin является обязательным и в него должен быть записан путь разделяемого объекта, собранного как плагин Go и экспортируещий вызов OnPacket примерно так:
Более сложный пример использования библиотеки gopacket для парсинга и дампа всех слоёв пакета:
Этот файл test.go может быть скомпилирован примерно так:
После того, как сгенерирован файл test.so, он может использоваться для параметра packet.proxy.plugin.
tcp.proxy
Транспарентный (прозрачный) TCP прокси, с которым можно использовать модули на скриптах javascript. Если использовать вместе со спуфером, то весь TCP трафик на заданный адрес и порт будет перенаправляться на него и, если нужно, он будет автоматически обрабатывать переадресацию портов.
Команды
команда | описание |
---|---|
tcp.proxy on | Запуск TCP. |
tcp.proxy off | Остановка TCP. |
Параметры
параметр | значение по умолчанию | описание |
---|---|---|
tcp.port | 443 | TCP порт для перенаправления когда прокси активирован. |
tcp.address | Обязательный удалённый адрес TCP прокси. | |
tcp.proxy.port | 8443 | Порт для привязки на TCP прокси. |
tcp.proxy.address | Адрес для привязки на TCP прокси. | |
tcp.proxy.script | Путь до скрипта модуля прокси. |
tcp.modules
Работа модуля tcp.modules управляется скриптами — javascript файлами, в которых должна быть объявлена по крайней мере одна из следующих функций:
Модули могут изменять буфер данных и возвращать его, сигнализируя модулю о переопределении исходного буфера. Например, каплет tcp-req-dump.cap использует функцию onData для переопределения запросов example.com на порт 80:
Встроенные функции
Модули могут использовать следующие встроенные функции.
функция | описание |
---|---|
readFile(«/путь/до/файла») | Возвращает содержимое файла как строку. |
log(«message») | Пишет сообщение в интерактивную сессию (его уровень будет INFO ). |
env(«iface.ipv4») | Прочитать переменную. |
env(«foo», «bar») | Установить переменную. |
http.proxy
Полнофункциональный транспарентный (прозрачный) HTTP прокси, работой которого можно управлять с помощью скриптов, используя модули javascript. Если использовать совместно со спуфером, весь HTTP трафик будет перенаправляться на него и при необходимости он будет автоматически обрабатывать перенаправление портов.
Команды
команда | описание |
---|---|
http.proxy on | Запуск HTTP прокси. |
http.proxy off | Остановка HTTP прокси. |
Параметры
параметр | значение по умолчанию | описание |
---|---|---|
http.port | 80 | HTTP порт для редиректа когда прокси активирован. |
http.proxy.address | Адрес для привязки HTTP прокси. | |
http.proxy.port | 8080 | Порт для привязки HTTP прокси. |
http.proxy.sslstrip | false | Включить или отключить снятие SSL. |
http.proxy.script | Путь до скрипта модуля прокси. |
https.proxy
Полнофункциональный транспарентный (прозрачный) HTTPS прокси, работой которого можно управлять модулями на javascript, он на лету автоматически генерирует сертификаты. Если используется вместе со спуфером, весь HTTPS будет перенаправляться на него и при необходимости он будет автоматически управлять редиректами портов.
Команды
команда | описание |
---|---|
https.proxy on | Запустить HTTPS прокси. |
https.proxy off | Остановить HTTPS прокси. |
Параметры
параметр | значение по умолчанию | описание |
---|---|---|
https.port | 443 | HTTP порт для редиректа когда прокси активирован. |
https.proxy.address | Адрес для привязки HTTP прокси. | |
https.proxy.port | 8083 | Порт для привязки HTTP прокси. |
https.proxy.certificate | HTTPS proxy certification authority TLS certificate file. | |
https.proxy.key | HTTPS proxy certification authority TLS key file. | |
https.proxy.sslstrip | false | Включить или отключить снятие SSL. |
https.proxy.script | Путь до скрипта модуля прокси. |
http.modules
Модули http.proxy и https.proxy могут управляться скриптами с использованием javascript файлов, который должны объявлять по крайней мере одну из следующих функций:
Модули могут изменять объекты req запроса и res ответа, например, каплет web-override.cap использует функцию onRequest чтобы переписать каждый запрос перед его выполнением с фальшивым ответом:
Каплет login-man-abuse.cap использует обработчик onResponse для внедрения вредоносного файла javascript в каждый html ответ:
Встроенные функции
Модули могут использовать следующие встроенные функции.
функция | описание |
---|---|
readFile(«/путь/до/файла») | Возвращает содержимое файла как строку. |
writeFile(«/путь/до/файла», «hello world») | Записывает строку hello world в файл, возвращает null или сообщение об ошибке. |
log_debug(«сообщение») | Записать сообщение в интерактивную сессию (его уровень будет DEBUG ). |
log_info(«сообщение») | Записать сообщение в интерактивную сессию (его уровень будет INFO ). |
log_warn(«сообщение») | Записать сообщение в интерактивную сессию (его уровень будет WARNING ). |
log_error(«сообщение») | Записать сообщение в интерактивную сессию (его уровень будет ERROR ). |
log_fatal(«сообщение») | Записать сообщение в интерактивную сессию (его уровень будет FATAL ). |
log(«сообщение») | Сокращение для log_info(«сообщение») . |
btoa(«сообщение») | Кодировать сообщение в base64. |
atob(«bWVzc2FnZQ==») | Декодировать сообщение из base64. |
env(«iface.ipv4») | Считать переменную. |
env(«foo», «bar») | Установить переменную. |
http.server
Простой HTTP сервер, работает как другие веб-сервера: по запросу пользователя отдаёт файлы и скрипты.
Команды
команда | описание |
---|---|
http.server on | Запуск в фоне HTTP сервера. |
http.server off | Остановка в фоне HTTP сервера. |
Параметры
параметр | значение по умолчанию | описание |
---|---|---|
http.server.path | . | Папка сервера. |
http.server.address | Адрес для привязки http сервера. | |
http.server.port | 80 | Порт для привязки http сервера. |
http.server.certificate | Файл сертификата TLS, если не является пустым, сконфигурирует этот веб-сервер как HTTPS сервер (автоматически сгенеририрует, если значение заполнено, но этот файл не существует. | |
http.server.key | Файл ключа TLS, если не является пустым, сконфигурирует этот веб-сервер как HTTPS сервер (автоматически сгенеририрует, если значение заполнено, но этот файл не существует. |
Примеры
Команда для запуска веб-сервера, корневой папкой веб-сайтов является /var/www/html:
mac.changer
Меняет mac адрес выбранного интерфейса.
Команды
команда | описание |
---|---|
mac.changer on | Запустить модуль изменения mac. |
mac.changer off | Остановить модуль изменения mac и восстановить оригинальный mac адрес. |
Параметры
параметр | значение по умолчанию | описание |
---|---|---|
mac.changer.iface | Имя интерфейса для использования. | |
mac.changer.address | Аппаратный адрес, который будет применён к интерфейсу. |
Модуль, общающийся с апаратурой GPS на последовательном интерфейсе.
Команды
команда | описание |
---|---|
gps on | Запустить получение данных с аппаратуры GPS. |
gps off | Остановить получение данных с аппаратуры GPS. |
gps.show | Показать последние координаты, возвращённые GPS аппаратурой. |
Параметры
параметр | значение по умолчанию | описание |
---|---|---|
gps.device | /dev/ttyUSB0 | Последовательное устройство GPS. |
gps.baudrate | 19200 | Скорость передачи данных последовательного устройства GPS. |
Примеры
Включить GPS, подождать 5 секунд и затем показать текущие координаты:
Примеры запуска bettercap
Программа должна запускаться с правами суперпользователя:
Далее команды вводятся в интерактивном режиме.
Чтобы показать список обнаруженных хостов в локальной сети:
Для запуска ARP-спуфинга и сниффинга в отношении локального IP 192.168.0.90, в результате будет выполняться непрерывный ARP-спуфинг данного адреса, что приведёт к тому, что трафик будет перенаправлен на машину атакующего, на прозрачный HTTP прокси, где, по возможности, с помощью sslstrip будет сделан переход с HTTPS на HTTP, вербальность сниффера понижена, чтобы не выводились не интересующие нас данные:
Установка bettercap
Установка в Kali Linux
Установка в BlackArch
Программа предустановлена в BlackArch.
Информация об установке в другие операционные системы будет добавлена позже.
Источник