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 или прокси для двух устройств запустите:
Обычно основным устройством выступает телефон, а второстепенным mac адресом обычно является другое периферийное устройство (смарт часы, наушники, клавиатура, obd2 dongle и т.д.).
Основное устройство (master) отправляет запрос на подключение, а второстепенное устройство (slave) прослушивает, чтобы кто-то к нему подключился.
После того, как прокси подключается к второстепенному устройству, и основное устройство подсоединяется к прокси устройству, вы сможете видеть и модифицировать трафик.
Как узнать BT MAC адрес?
Вы можете посмотреть его в настройках, обычно это возможно для телефона. Самый надёжный способ — это перевести режим в режим поиска и просканировать его. Имеется два способа просканировать устройства: сканирование и запрос. Это можно сделать с hcitool:
Для получения списку служб на устройстве:
Использование
Некоторые устройства могут ограничивать подключения, основываясь на имени, классе или адресе другого bluetooth устройства.
Поэтому программа получить эти свойства целевого устройства, которое нужно проксировать, и затем клонирует их в проксирующий адаптер(ы).
Затем она начнёт с попытки подключиться к второстепенному устройству из клонированного мастер адаптера. Это создаст сокет для каждой имеющейся на slave службе и будет ретранслировать трафик независимо для каждой из них.
После подключения второстепенного устройства, клонированный slave адаптер будет установлен на прослушивание подключения от основного устройства. В этот момент реальное основное устройство должно подключиться к адаптеру. После подключения основного устройства, соединение для проксирования завершено.
Использование только одного адаптерах
Эта программа использует как 1, так и 2 Bluetooth адаптера. Если вы используете один адаптер, тогда будет клонировано только второстепенное устройство. Если используется 2 адаптера, то будут клонированы оба устройства; это может быть необходимо для более ограничительных Bluetooth устройств.
Продвинутое исопльзование
Манипулирование трафиком может обрабатываться python'ом, указав в опции командной скрипт. Просто реализуйте функции вызова master_cb и slave_cb. Они вызываются при получении и возврате полученных данных обратно на соответствующее устройство.
Этот код может быть отредактирован и перегружен во время работы нажатием 'r' в консоле программы. Это позволит избежать возни с повторными соединениями. Любые ошибки будут отловлены, и обычная передача будет продолжаться.
Установка Btproxy
Зависимости
Установка в BlackArch
Домашняя страница: 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
Установка Btproxy
Зависимости
- Нужна по крайней мере 1 Bluetooth карта
(USB или внутренняя).
- Работает на Linux, других *nix или OS X.
- BlueZ 4
Код:
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
Код:
sudo pacman -S bluez bluez-utils python2 --needed
git clone https://github.com/conorpp/btproxy.git
cd btproxy/
sudo python setup.py install