Разделы презентаций


Пишем приложение для вибратора с Алиэкспресс, или Как реверс - инжинирить

Содержание

Для чего нам Bluetooth?​

Слайды и текст этой презентации

Слайд 1Пишем приложение для вибратора с Алиэкспресс, или Как реверс-инжинирить Bluetooth
Гончаров

Даниил (Finch Technologies Ltd.)​

Пишем приложение для вибратора с Алиэкспресс,  или Как реверс-инжинирить BluetoothГончаров Даниил (Finch Technologies Ltd.)​

Слайд 2Для чего нам Bluetooth?​

Для чего нам Bluetooth?​

Слайд 3Finch Technologies & Co.

Finch Technologies & Co.

Слайд 4План
Основы Bluetooth
Способы реверс-инжиниринга Bluetooth
Реверс-инжиниринг вибратора с Алиэкспресс




ПланОсновы BluetoothСпособы реверс-инжиниринга BluetoothРеверс-инжиниринг вибратора с Алиэкспресс

Слайд 5Bluetooth-Device

Bluetooth-Device

Слайд 6BLE Connect

BLE Connect

Слайд 7BLE Security
Pairing – процесс создания парами BLE-устройств секретных ключей для

последующего шифрования трафика


BLE SecurityPairing – процесс создания парами BLE-устройств секретных ключей для последующего шифрования трафика

Слайд 8BluetoothDevice & BluetoothGatt
GATT – профиль Bluetooth, определяющий способ взаимодействия двух

устройств и использующий концепцию атрибутов
GATT Characteristic – контейнер для данных
GATT

Service – совокупность характеристик
UUID – 128-битный уникальный идентификатор атрибута


BluetoothDevice & BluetoothGattGATT – профиль Bluetooth, определяющий способ взаимодействия двух устройств и использующий концепцию атрибутовGATT Characteristic –

Слайд 9GATT Characteristic

GATT Characteristic

Слайд 10BluetoothGatt

BluetoothGatt

Слайд 11BluetoothGatt read

BluetoothGatt read

Слайд 12BluetoothGatt write

BluetoothGatt write

Слайд 13BluetoothGatt notification

BluetoothGatt notification

Слайд 14Пример
1. Подключение
2. Поиск всех сервисов устройства

3. Список сервисов

4. Отправка команды
5.

Результат отправки

Пример1. Подключение2. Поиск всех сервисов устройства3. Список сервисов4. Отправка команды5. Результат отправки

Слайд 15О BLE подробнее
http://appsconf.ru/moscow/2019/abstracts/5051
https://youtu.be/hpHFo_Lyk0M

О BLE подробнееhttp://appsconf.ru/moscow/2019/abstracts/5051https://youtu.be/hpHFo_Lyk0M

Слайд 16BLE пакет

BLE пакет

Слайд 17Реверс-инжиниринг BLE-пакета
Анализ BLE-профиля
Реверс-инжиниринг приложения
Анализ трафика

Реверс-инжиниринг BLE-пакетаАнализ BLE-профиляРеверс-инжиниринг приложения Анализ трафика

Слайд 18nRF Connect
Сканирование
Подключение
Сервисы
Характеристики
Чтение и запись

nRF ConnectСканированиеПодключениеСервисыХарактеристикиЧтение и запись

Слайд 19nRF Connect
Android
https://play.google.com/store/apps/details?id=no.nordicsemi.android.mcp
iOS
https://apps.apple.com/ru/app/nrf-connect/id1054362403

nRF ConnectAndroidhttps://play.google.com/store/apps/details?id=no.nordicsemi.android.mcp iOShttps://apps.apple.com/ru/app/nrf-connect/id1054362403

Слайд 20Wireshark
Просмотр BLE-логов
Адреса
Запись/Чтение
Сервисы
Характеристики

WiresharkПросмотр BLE-логовАдресаЗапись/ЧтениеСервисыХарактеристики

Слайд 21Wireshark
Windows & macOS
https://www.wireshark.org/download.html

WiresharkWindows & macOShttps://www.wireshark.org/download.html

Слайд 22Анализ BLE-профиля
Список всех сервисов и характеристик
Свойства характеристик
Чтение/Запись сырых пакетов

Анализ 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

Получение apkadb shell pm path package.namepackage:/data/app/package.name/app.apkadb 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");

Поиск нужного сервисаUART_UUID = UUID.fromString(

Слайд 35Поиск чтения данных
class Clazz extends BluetoothGattCallback { @Override

public void onCharacteristicRead(…) { ... } }

Поиск чтения данныхclass Clazz extends BluetoothGattCallback {   @Override   public void onCharacteristicRead(…)

Слайд 36Поиск формата данных
onCharacteristicRead(… Characteristic c)
{
receivedData(c.getValue());
}

Поиск формата данныхonCharacteristicRead(… Characteristic c){	receivedData(c.getValue());}

Слайд 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];
  ...

Поиск формата данных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];  ...

Слайд 38Поиск записи данных
service = gatt.getService(s);
char = service.getCharacteristic(c);
char.setValue(value);
gatt.writeCharacteristic(char);

Поиск записи данныхservice = gatt.getService(s);char = service.getCharacteristic(c);char.setValue(value);gatt.writeCharacteristic(char);

Слайд 39Резюме
Не все приложения можно реверс-инжинирить

РезюмеНе все приложения можно реверс-инжинирить

Слайд 40Анализ трафика приложения
Протокол работы с девайсом
Сервисы и характеристики
Данные чтения/записи
Адреса, пароли,

явки


Анализ трафика приложенияПротокол работы с девайсомСервисы и характеристикиДанные чтения/записиАдреса, пароли, явки

Слайд 41Включения логов трафика

Включения логов трафика

Слайд 42Получаем трафик приложения
Делаем некие действия в приложение
adb pull /sdcard/btsnoop_hci.log

Получаем трафик приложенияДелаем некие действия в приложениеadb pull /sdcard/btsnoop_hci.log

Слайд 43Анализ трафика

Анализ трафика

Слайд 44Фильтрация по адресу

Фильтрация по адресу

Слайд 45Анализ трафика
Фильтрация по адресу
Лог записи/чтения
Сервис
Характеристика
Значения

Анализ трафикаФильтрация по адресуЛог записи/чтенияСервисХарактеристикаЗначения

Слайд 46Проверка

Проверка

Слайд 47Резюме
Информация о работе приложения без его реверс-инжиниринга
Неявный формат данных

РезюмеИнформация о работе приложения без его реверс-инжинирингаНеявный формат данных

Слайд 48Реверс вибратора

Реверс вибратора

Слайд 49Сервисы девайса

Сервисы девайса

Слайд 50Брутфорс?
Нужно найти сервис для отправки команд
Отправлять туда байты
Фиксировать результат

Брутфорс?Нужно найти сервис для отправки командОтправлять туда байтыФиксировать результат

Слайд 51Характеристика для команд
Находим характеристики для записи
Properties: Write

Характеристика для командНаходим характеристики для записиProperties: Write

Слайд 52Приложение для брутфорса
char = service.getCharacteristic(uuid);
while (true) {
    char.setValue(rand_byte_array);
    gatt.writeCharacteristic(char);
    // Смотрим на результат
}

Приложение для брутфорса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

Реверс-инжиниринг apkadb shell pm path cn.yingtaoapp.androidpackage:/data/app/cn.yingtaoapp.android/base.apkadb pull /data/app/cn.yingtaoapp.android/base.apkДекомпиляция apk

Слайд 56Поиск нужного сервиса

Поиск нужного сервиса

Слайд 57Поиск нужного сервиса
Характеристики с “Write”

Поиск нужного сервисаХарактеристики с “Write”

Слайд 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;
    }

Поиск отправки данных    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;    }

Слайд 59Проверим

Проверим

Слайд 60Стоит ли доверять?

Стоит ли доверять?

Слайд 61Анализ приложения
Включим логи
Отправим команду
Посмотрим логи

Анализ приложенияВключим логиОтправим командуПосмотрим логи

Слайд 62Анализ трафика

Анализ трафика

Слайд 63Проверим

Проверим

Слайд 64Что за формат?

Что за формат?

Слайд 65Получим команды
0153fd00
3200

Получим команды0153fd003200…

Слайд 66Поиск в приложении

Поиск в приложении

Слайд 67Резюме
Формат команд
+
UUID сервисов и характеристик
=
Свое приложение

РезюмеФормат команд+UUID сервисов и характеристик=Свое приложение

Слайд 68BLE Security?
и Да и Нет
Шифрование передачи данных между устройствами

BLE Security?и Да и НетШифрование передачи данных между устройствами

Слайд 69Немного методов защиты
Спрятать парс данных в C++, etc
Аутентификация устройства

и приложения
Дополнительное шифрование трафика

Немного методов защиты Спрятать парс данных в C++, etcАутентификация устройства и приложенияДополнительное шифрование трафика

Слайд 70Заключение
Bluetooth просто – протокол передачи данных
Не стоит забывать о безопасности!

ЗаключениеBluetooth просто – протокол передачи данныхНе стоит забывать о безопасности!

Слайд 71Спасибо за внимание
Контакты:
telegram @neargye

Спасибо за вниманиеКонтакты:telegram @neargye

Обратная связь

Если не удалось найти и скачать доклад-презентацию, Вы можете заказать его на нашем сайте. Мы постараемся найти нужный Вам материал и отправим по электронной почте. Не стесняйтесь обращаться к нам, если у вас возникли вопросы или пожелания:

Email: Нажмите что бы посмотреть 

Что такое TheSlide.ru?

Это сайт презентации, докладов, проектов в PowerPoint. Здесь удобно  хранить и делиться своими презентациями с другими пользователями.


Для правообладателей

Яндекс.Метрика