Похожие презентации:
Пишем приложение для вибратора с Алиэкспресс, или как реверс-инжинирить Bluetooth
1. Пишем приложение для вибратора с Алиэкспресс, или Как реверс-инжинирить Bluetooth
Гончаров Даниил (Finch Technologies Ltd.)2. Для чего нам Bluetooth?
Для чего нам Bluetooth?2
3. Finch Technologies & Co.
Finch Technologies & Co.3
4. План
4
Основы Bluetooth
Способы реверс-инжиниринга Bluetooth
Реверс-инжиниринг вибратора с Алиэкспресс
5. Bluetooth-Device
56. BLE Connect
67. BLE Security
7
Pairing – процесс создания
парами BLE-устройств
секретных ключей для
последующего
шифрования трафика
8. BluetoothDevice & BluetoothGatt
BluetoothDevice & BluetoothGatt8
GATT – профиль Bluetooth, определяющий
способ взаимодействия двух устройств и
использующий концепцию атрибутов
GATT Characteristic – контейнер для данных
GATT Service – совокупность характеристик
UUID – 128-битный уникальный
идентификатор атрибута
9. GATT Characteristic
910. BluetoothGatt
1011. BluetoothGatt read
1112. BluetoothGatt write
1213. BluetoothGatt notification
1314. Пример
1. Подключение2. Поиск всех сервисов устройства
3. Список сервисов
4. Отправка команды
5. Результат отправки
14
15. О BLE подробнее
15
http://appsconf.ru/moscow/2019/abstracts/
5051
https://youtu.be/hpHFo_Lyk0M
16. BLE пакет
1617. Реверс-инжиниринг BLE-пакета
17
Анализ BLE-профиля
Реверс-инжиниринг приложения
Анализ трафика
18. nRF Connect
18
Сканирование
Подключение
Сервисы
Характеристики
Чтение и запись
19. nRF Connect
Android• https://play.google.com/st
ore/apps/details?id=no.no
rdicsemi.android.mcp
19
iOS
• https://apps.apple.com/ru
/app/nrfconnect/id1054362403
20. Wireshark
• Просмотр BLE-логов–
–
–
–
20
Адреса
Запись/Чтение
Сервисы
Характеристики
21. Wireshark
21
Windows & macOS
https://www.wireshark.org/download.html
22. Анализ BLE-профиля
22
Список всех сервисов и характеристик
Свойства характеристик
Чтение/Запись сырых пакетов
23. Подключение
2324. Список сервисов
2425. Список характеристик
2526. Свойства характеристик
2627. Запись данных
2728. Чтение данных
2829. Резюме
29
Первичная информация о девайсе
Формат данных неизвестен
30. Реверс-инжиниринг приложения
30
Декомпиляция бинарников
Найти сервисы и характеристики
Формат данных
31. Получение apk
• adb shell pm path package.name• package:/data/app/package.name/app.apk
• adb pull /data/app/package.name/app.apk
31
32. Декомпиляция бинарников
3233. Анализ исходников
3334. Поиск нужного сервиса
UART_UUID = UUID.fromString("6E400001-B5A3-F393-E0A9-E50E24DCCA9E");TX_UUID = UUID.fromString("6E400002-B5A3-F393-E0A9-E50E24DCCA9E");
RX_UUID = UUID.fromString("6E400003-B5A3-F393-E0A9-E50E24DCCA9E");
34
35. Поиск чтения данных
class Clazz extends BluetoothGattCallback{
@Override
public void onCharacteristicRead(…)
{ ... }
}
35
36. Поиск формата данных
onCharacteristicRead(… Characteristic c){
receivedData(c.getValue());
}
36
37. Поиск формата данных
private static void receivedData(byte[] dataBytes){
byte[] temp = { dataBytes[2], dataBytes[3] };
boolean[] bits = byteArray2BitArray(temp);
Inputs.buttonA.key = bits[0];
...
Inputs.forward2.key = bits[13];
...
37
38. Поиск записи данных
service = gatt.getService(s);char = service.getCharacteristic(c);
char.setValue(value);
gatt.writeCharacteristic(char);
38
39. Резюме
39
Не все приложения можно реверсинжинирить
40. Анализ трафика приложения
Протокол работы с девайсом
–
–
–
40
Сервисы и характеристики
Данные чтения/записи
Адреса, пароли, явки
41. Включения логов трафика
4142. Получаем трафик приложения
42
Делаем некие действия в приложение
adb pull /sdcard/btsnoop_hci.log
43. Анализ трафика
4344. Фильтрация по адресу
4445. Анализ трафика
1.2.
3.
4.
5.
45
Фильтрация по адресу
Лог записи/чтения
Сервис
Характеристика
Значения
46. Проверка
4647. Резюме
47
Информация о работе приложения без его
реверс-инжиниринга
Неявный формат данных
48. Реверс вибратора
4849. Сервисы девайса
4950. Брутфорс?
50
Нужно найти сервис для отправки команд
Отправлять туда байты
Фиксировать результат
51. Характеристика для команд
• Находимхарактеристики для
записи
– Properties: Write
51
52. Приложение для брутфорса
char = service.getCharacteristic(uuid);while (true) {
char.setValue(rand_byte_array);
gatt.writeCharacteristic(char);
// Смотрим на результат
}
52
53. Брутфорс
5354. Брутфорс?
54
Брутфорс возможен для несложного
пакета команд
Но занимает много времени и внимания
55. Реверс-инжиниринг apk
55
adb shell pm path
cn.yingtaoapp.android
package:/data/app/cn.yingtaoap
p.android/base.apk
adb pull
/data/app/cn.yingtaoapp.androi
d/base.apk
Декомпиляция apk
56. Поиск нужного сервиса
5657. Поиск нужного сервиса
• Характеристики с“Write”
57
58. Поиск отправки данных
public void doClick(int value) {case 0:
this.mToy.BLE.write(value * 128);
return;
case 1:
this.mToy.BLE.write(value * 64);
return;
default:
return;
}
58
59. Проверим
5960. Стоит ли доверять?
6061. Анализ приложения
• Включим логи• Отправим команду
• Посмотрим логи
61
62. Анализ трафика
6263. Проверим
6364. Что за формат?
6465. Получим команды
• 0153fd00• 3200
• …
65
66. Поиск в приложении
6667. Резюме
Формат команд+
UUID сервисов и характеристик
=
Свое приложение
67
68. BLE Security?
68
и Да и Нет
Шифрование передачи данных между
устройствами
69. Немного методов защиты
69
Спрятать парс данных в C++, etc
Аутентификация устройства и приложения
Дополнительное шифрование трафика
70. Заключение
70
Bluetooth просто – протокол передачи
данных
Не стоит забывать о безопасности!
71. Спасибо за внимание
Контакты:• telegram @neargye
71