• XSS.stack #1 – первый литературный журнал от юзеров форума

Статья Btproxy - инструмент проведения MiTM атаки для Bluetooth устройств

lukas

(L3) cache
Пользователь
Регистрация
11.10.2018
Сообщения
282
Реакции
691
Btproxy — это инструмент проведения атаки человек-посередине для Bluetooth устройств. Программа выступает в качестве MiTM прокси, используется для активного анализа bluetooth подключений

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


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

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

Эта программа начинает с убийства процесса 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
Этот код может быть отредактирован и перегружен во время работы нажатием 'r' в консоле программы. Это позволит избежать возни с повторными соединениями. Любые ошибки будут отловлены, и обычная передача будет продолжаться.


Установка Btproxy
Зависимости
  • Нужна по крайней мере 1 Bluetooth карта
    1
    (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
 


Напишите ответ...
  • Вставить:
Прикрепить файлы
Верх