You are here: Home » Беспроводные атаки » Btproxy

Btproxy

Описание Btproxy

Btproxy — это инструмент проведения атаки человек-посередине для Bluetooth устройств. Программа выступает в качестве MiTM прокси, используется для активного анализа bluetooth подключений

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

Автор: Conor Patrick

Лицензия: GPLv3

Справка по Btproxy

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

btproxy [-h] [-a SET_ADDRESS] [-n] [-c] [-i INTERFACE] [-s SCRIPT] [-l]
               [-1 MASTER_NAME] [-2 SLAVE_NAME] [-C] [-v] [-z] [-q]
               [addr_master] [addr_slave]
позиционные аргументы:
  addr_master           Bluetooth адрес целевого главного устройства
  addr_slave            Bluetooth адрес целевого второстепенного устройства

опциональные аргументы:
  -h, --help            показать справку и выйти
  -a SET_ADDRESS, --set-address SET_ADDRESS
                        Устанавливаемый адрес для Bluetooth адаптера (требует -i)
  -n, --repair          Не использовать повторно существующее спаренное соединение
  -c, --copy-addresses  Скопировать адрес целевого устройства на адаптер.
                        Будет использовать адрес второстепенного устройства, если используется только один адаптер.
                        Полезно для эмуляции некоторых устройств. На некоторых
                        адаптерах это может не работать.
  -i INTERFACE, --interface INTERFACE
                        Выбрать для использования Bluetooth интерфейс (для
                        использования только с одним адаптером)
  -s SCRIPT, --script SCRIPT
                        Передать python скрипт, содержащий функции определения
                        для master_cb и slave_cb для живой манипуляции
                        трафиком
  -l, --list            Составить список адаптеров
  -1 MASTER_NAME, --master-name MASTER_NAME
                        Подменённое имя для использования основным устройством
  -2 SLAVE_NAME, --slave-name SLAVE_NAME
                        Подменённое имя для использования второстепенным устройством
  -C, --slave-active    Подменённый второстепенный адаптер будет активно подключён
                        к основному устройству вместо того, чтобы слушать соединения
  -v, --verbose         Печатать дополнительную информацию для отладки
  -z, --no-sdp          Позволить bluetoothd нормально запустить SDP и позволить
                        btproxy сообщить о скопированных службах. (Не завершено)
  -q, --inquire-again   Запрашивать службу снова, не использовать
                        сохранённые настройки.

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

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

Как она работает

Эта программа начинает с убийства процесса bluetoothd и снова запускает его с LD_PRELOAD указывающим на обёртку для системы привязки вызовов для блокировки bluetoothd от привязки к L2CAP порт 1 (SDP). Весь SDP трафик проходит через L2CAP порт 1, что делает простым MiTM/пересылку между двумя устройствами и нам не нужно беспокоиться о сокрытии режима поиска.

Вначале программа сканирует каждое устройство для получения его имени и класса устройства, для создания точных клонов. Она добавит строку '_btproxy' к каждому имени, чтобы сделать их различимыми с точки зрения пользователя. Эту строку вы можете заменить на свою опцией командной строки.

Затем программа просканирует службы вспомогательных (slave) устройств. Она сделает сокетное подключение к каждой службе и откроет порт прослушивания для подключения к основному (master) устройству. Когда основное устройство подключено, Proxy/MiTM полностью готова и вывод будет отправляться в STDOUT (стандартный вывод).

Примечания

Некоторые bluetooth устройства имеют различные методы спаривания, что делает этот процесс более сложным. Прямо сейчас поддерживается SPP и устаревшее спаривание с помощью пина.

У программы ещё отсутствует поддержка Bluetooth с низким энергопотреблением

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

Для запуске простой MiTM или прокси для двух устройств запустите:

btproxy <master-bt-mac-address> <slave-bt-mac-address>
# Будет сделано подключение к второстепенному 40:14:33:66:CC:FF устройству
# и ожидание подключения от основного F1:64:F3:31:67:88 устройства
btproxy F1:64:F3:31:67:88 40:14:33:66:CC:FF

Обычно основным устройством выступает телефон, а второстепенным mac адресом обычно является другое периферийное устройство (смарт часы, наушники, клавиатура, obd2 dongle и т.д.).

Основное устройство (master) отправляет запрос на подключение, а второстепенное устройство (slave) прослушивает, чтобы кто-то к нему подключился.

После того, как прокси подключается к второстепенному устройству, и основное устройство подсоединяется к прокси устройству, вы сможете видеть и модифицировать трафик.

Как узнать BT MAC адрес?

Вы можете посмотреть его в настройках, обычно это возможно для телефона. Самый надёжный способ — это перевести режим в режим поиска и просканировать его.

Имеется два способа просканировать устройства: сканирование и запрос. Это можно сделать с hcitool:

hcitool scan
hcitool inq

Для получения списку служб на устройстве:

sdptool records <bt-address>

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

Некоторые устройства могут ограничивать подключения, основываясь на имени, классе или адресе другого bluetooth устройства.

Поэтому программа получить эти свойства целевого устройства, которое нужно проксировать, и затем клонирует их в проксирующий адаптер(ы).

Затем она начнёт с попытки подключиться к второстепенному устройству из клонированного мастер адаптера. Это создаст сокет для каждой имеющейся на slave службе и будет ретранслировать трафик независимо для каждой из них.

После подключения второстепенного устройства, клонированный slave адаптер будет установлен на прослушивание подключения от основного устройства. В этот момент реальное основное устройство должно подключиться к адаптеру. После подключения основного устройства, соединение для проксирования завершено.

Использование только одного адаптерах

Эта программа использует как 1, так и 2 Bluetooth адаптера. Если вы используете один адаптер, тогда будет клонировано только второстепенное устройство. Если используется 2 адаптера, то будут клонированы оба устройства; это может быть необходимо для более ограничительных Bluetooth устройств.

Продвинутое исопльзование

Манипулирование трафиком может обрабатываться python'ом, указав в опции командной скрипт. Просто реализуйте функции вызова master_cb и slave_cb. Они вызываются при получении и возврате полученных данных обратно на соответствующее устройство.

# replace.py
def master_cb(req):
    """
        Что-то получено от основного устройства для отправки второстепенному.
    """
    print '<< ', repr(req)
    open('mastermessages.log', 'a+b').write(req)
    return req

def slave_cb(res):
    """
        Как и выше, но от второстепенного устройства для отправки основному
    """
    print '>> ', repr(res)
    open('slavemessages.log', 'a+b').write(res)
    return res

Также смотрите пример функции для манипулирования трафиком с часами Pebble в replace.py

Этот код может быть отредактирован и перегружен во время работы нажатием 'r' в консоле программы. Это позволит избежать возни с повторными соединениями. Любые ошибки будут отловлены, и обычная передача будет продолжаться.

Установка Btproxy

Зависимости

  • Нужна по крайней мере 1 Bluetooth карта (USB или внутренняя).
  • Работает на Linux, других *nix или OS X.
  • BlueZ 4

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

sudo apt-get install bluez bluez-tools libbluetooth-dev python-dev
git clone https://github.com/conorpp/btproxy.git
cd btproxy/
sudo python setup.py install

Установка в BlackArch

sudo pacman -S bluez bluez-utils python2 --needed
git clone https://github.com/conorpp/btproxy.git
cd btproxy/
sudo python setup.py install

Информация об установке в другие операционные системы будет добавлена позже.

Скриншоты Btproxy

Ошибки Btproxy

Зависания btproxy или bluetoothd

Если вы используете bluez 5, вам следует попробовать удалить и установить bluez 4. С bluez 5 возможны зависания.

error accessing bluetooth device (ошибка доступа к устройству bluetooth)

Убедитесь, что bluetooth адаптер подключён и включен.

Запустите

    # Просмотр списка адаптеров
    hciconfig -a

    # Включить
    sudo hciconfig hciX up

    # если вы получили это сообщение
    Can't init device hci0: Operation not possible due to RF-kill (132)

    # тогда попробуйте разблокировать его командой rfkill
    sudo rfkill unblock all

UserWarning: <path>/.python-eggs is writable by group/others

Исправление:

chmod g-rw,o-x <path>/.python-eggs

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

Ссылки на инструкции будут добавлены позже.

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

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