- Инструменты 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
Описание 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.
Информация об установке в другие операционные системы будет добавлена позже.
Источник