Содержание
- 2. Для чего нам Bluetooth?
- 3. Finch Technologies & Co.
- 4. План Основы Bluetooth Способы реверс-инжиниринга Bluetooth Реверс-инжиниринг вибратора с Алиэкспресс
- 5. Bluetooth-Device
- 6. BLE Connect
- 7. BLE Security Pairing – процесс создания парами BLE-устройств секретных ключей для последующего шифрования трафика
- 8. BluetoothDevice & BluetoothGatt GATT – профиль Bluetooth, определяющий способ взаимодействия двух устройств и использующий концепцию атрибутов
- 9. GATT Characteristic
- 10. BluetoothGatt
- 11. BluetoothGatt read
- 12. BluetoothGatt write
- 13. BluetoothGatt notification
- 14. Пример 1. Подключение 2. Поиск всех сервисов устройства 3. Список сервисов 4. Отправка команды 5. Результат
- 15. О BLE подробнее http://appsconf.ru/moscow/2019/abstracts/5051 https://youtu.be/hpHFo_Lyk0M
- 16. BLE пакет
- 17. Реверс-инжиниринг BLE-пакета Анализ BLE-профиля Реверс-инжиниринг приложения Анализ трафика
- 18. nRF Connect Сканирование Подключение Сервисы Характеристики Чтение и запись
- 19. nRF Connect Android https://play.google.com/store/apps/details?id=no.nordicsemi.android.mcp iOS https://apps.apple.com/ru/app/nrf-connect/id1054362403
- 20. Wireshark Просмотр BLE-логов Адреса Запись/Чтение Сервисы Характеристики
- 21. Wireshark Windows & macOS https://www.wireshark.org/download.html
- 22. Анализ BLE-профиля Список всех сервисов и характеристик Свойства характеристик Чтение/Запись сырых пакетов
- 23. Подключение
- 24. Список сервисов
- 25. Список характеристик
- 26. Свойства характеристик
- 27. Запись данных
- 28. Чтение данных
- 29. Резюме Первичная информация о девайсе Формат данных неизвестен
- 30. Реверс-инжиниринг приложения Декомпиляция бинарников Найти сервисы и характеристики Формат данных
- 31. Получение apk adb shell pm path package.name package:/data/app/package.name/app.apk adb pull /data/app/package.name/app.apk
- 32. Декомпиляция бинарников
- 33. Анализ исходников
- 34. Поиск нужного сервиса 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");
- 35. Поиск чтения данных class Clazz extends BluetoothGattCallback { @Override public void onCharacteristicRead(…) { ... } }
- 36. Поиск формата данных onCharacteristicRead(… Characteristic c) { receivedData(c.getValue()); }
- 37. Поиск формата данных private static void receivedData(byte[] dataBytes) { byte[] temp = { dataBytes[2], dataBytes[3] };
- 38. Поиск записи данных service = gatt.getService(s); char = service.getCharacteristic(c); char.setValue(value); gatt.writeCharacteristic(char);
- 39. Резюме Не все приложения можно реверс-инжинирить
- 40. Анализ трафика приложения Протокол работы с девайсом Сервисы и характеристики Данные чтения/записи Адреса, пароли, явки
- 41. Включения логов трафика
- 42. Получаем трафик приложения Делаем некие действия в приложение adb pull /sdcard/btsnoop_hci.log
- 43. Анализ трафика
- 44. Фильтрация по адресу
- 45. Анализ трафика Фильтрация по адресу Лог записи/чтения Сервис Характеристика Значения
- 46. Проверка
- 47. Резюме Информация о работе приложения без его реверс-инжиниринга Неявный формат данных
- 48. Реверс вибратора
- 49. Сервисы девайса
- 50. Брутфорс? Нужно найти сервис для отправки команд Отправлять туда байты Фиксировать результат
- 51. Характеристика для команд Находим характеристики для записи Properties: Write
- 52. Приложение для брутфорса char = service.getCharacteristic(uuid); while (true) { char.setValue(rand_byte_array); gatt.writeCharacteristic(char); // Смотрим на результат }
- 53. Брутфорс
- 54. Брутфорс? Брутфорс возможен для несложного пакета команд Но занимает много времени и внимания
- 55. Реверс-инжиниринг apk adb shell pm path cn.yingtaoapp.android package:/data/app/cn.yingtaoapp.android/base.apk adb pull /data/app/cn.yingtaoapp.android/base.apk Декомпиляция apk
- 56. Поиск нужного сервиса
- 57. Поиск нужного сервиса Характеристики с “Write”
- 58. Поиск отправки данных public void doClick(int value) { case 0: this.mToy.BLE.write(value * 128); return; case 1:
- 59. Проверим
- 60. Стоит ли доверять?
- 61. Анализ приложения Включим логи Отправим команду Посмотрим логи
- 62. Анализ трафика
- 63. Проверим
- 64. Что за формат?
- 65. Получим команды 0153fd00 3200 …
- 66. Поиск в приложении
- 67. Резюме Формат команд + UUID сервисов и характеристик = Свое приложение
- 68. BLE Security? и Да и Нет Шифрование передачи данных между устройствами
- 69. Немного методов защиты Спрятать парс данных в C++, etc Аутентификация устройства и приложения Дополнительное шифрование трафика
- 70. Заключение Bluetooth просто – протокол передачи данных Не стоит забывать о безопасности!
- 71. Спасибо за внимание Контакты: telegram @neargye
- 73. Скачать презентацию