Многабукаф

Я обнаружил уязвимость, которая позволяет открывать электронные сейфы компании Sentry Safe и Master Lock без пин-кода. Производителя я уведомил, но ответа от них так и не получил.

Я создал альтернативную плату и прошивку для решения этой проблемы, они доступны по ссылке.

Предыстория

Однажды по случаю я прикупил логический анализатор и задумался, что же с ним делать?

Посмотрел вокруг... Телевизор... принтер...

... электронный сейф!

Разборка

Попробуем понять, как это работает. Для начала разберём дверь и заглянем внутрь.

Там всего две платы:

  • 1 плата снаружи с батареями, клавиатурой, светодиодами и зуммером.

  • 1 плата внутри с памятью и соленоидом (который механически отпирает болты).

Захват

Между этими двумя платами есть 4 провода (чёрный, жёлтый, зелёный и красный). Поскольку цвета проводов не всегда соответствуют назначению, не будем безоговорочно им доверять. Мы можем осмотреть дорожки на плате, чтобы найти схему проводки, но поскольку мой новый логический анализатор может обрабатывать 8 каналов, давайте просто подключим каждый провод.

Такому электронному сейфу нужен 5-значный код, поэтому для первого захвата я просто нажму клавишу «1» 5 раз.

Результат: только сигнал зелёного провода начал меняться. Чёрный всегда низкий, жёлтый и красный всегда высокие (значит, цветам можно доверять).

На захваченном сигнале мы видим 5 повторений одной и той же фигуры подряд, поэтому можно сделать вывод, что эта фигура соответствует нажатию клавиши «1» (так как именно её мы и нажимали 5 раз). Чтобы декодировать полный сигнал, мы должны найти используемый протокол.

Этот сейф не относится к открытому аппаратному или программному обеспечению, поэтому мы не знаем, как он работает. Нужно копаться.

Давайте рассмотрим чипы на платах. На каждой из них только один микроконтроллер.

Согласно техническому описанию, основными протоколами связи, используемыми с этим микроконтроллером, являются SPI и I²C. Но не в этот раз, потому что им обоим нужен тактовый сигнал, а на других проводах нет никакого движения. Так что это скорее всего наиболее часто используемый протокол асинхронной шины: UART.

Хорошие новости: ПО с открытым исходным кодом для просмотра импульсов содержит множество декодеров, включая UART.

Но какая частота используется?

Чтобы узнать частоту, я начинаю с измерения времени между каждой фигурой, которая, как мы предполагаем, соотносится с нажатой клавишей.

Для передачи всего ключа потребовалось 2,1 мс, а самый короткий пик занял примерно 0,2 мс. Обычно UART использует 1 стартовый бит, 8 бит данных и 1 стоповый бит. Итого 10 бит.

2,1 мс / 10 = 0,21 мс

Это значение соответствует нашему самому короткому пику.

10 бит за 2,1 мс. Таким образом (1000 мс / 2,1 мс) * 10 = количество бит, которое можно передать за секунду, примерно равно 4762.

Частота UART должна соответствовать 9600 делениям. Значение 4762 очень близко к 4800, что соответствует 9600/2, обычной скорости для UART.

Поэтому мы пытаемся установить эту частоту в нашем декодере.

Работает! Мы можем прочитать наши 5x "1" ключей.

После некоторых попыток с разными кодами можно сделать следующие наблюдения о разных частях сигнала:

  • сигнал всегда начинается с формы пробуждения с низким состоянием 2,7 мс, затем высоким 0,25 мс (не является частью протокола UART);

  • после пробуждения сигнал всегда отправляет 0x0 байт;

  • после этого отправляется фиксированное значение 0x71, похоже это командный байт (0x71 = попытка разблокировать);

  • затем отправляются 5 цифр введённого кода;

  • наконец, последний байт меняется в зависимости от кода, похоже, это кастомная контрольная сумма (Checksum, строка чисел и букв, используемая для уникальной идентификации).

Вот данные:

Байт команды

Пробный код

Контрольная сумма

0x71

11111

0x76

0x71

22222

0x7B

0x71

12345

0x80

Мы видим, что контрольная сумма равна байту команды, к которому добавили каждый байт кода.

Теперь у нас есть вся информация, необходимая для автоматизации этого процесса с помощью короткой функции Arduino.

void send_command(int command, int a, int b, int c, int d, int e) {

  int checksum = (command + a + b + c + d + e);

  

  // Wake-up signal shape

  pinMode(pin, OUTPUT);

  digitalWrite(pin, LOW);

  delayMicroseconds(2750);

  digitalWrite(pin, HIGH);

  delayMicroseconds(200);

 

  // Data

  Serial.begin(4800);

  Serial.write(0x0);

  Serial.write(command);

  Serial.write(a);

  Serial.write(b);

  Serial.write(c);

  Serial.write(d);

  Serial.write(e);

  Serial.write(checksum);

  Serial.end();

 

  pinMode(pin, OUTPUT);

  digitalWrite(pin, HIGH);

}

Но даже если каждый вариант кода можно попробовать очень быстро, в сейфе есть защита от брутфорса. Поэтому я пытаюсь зафиксировать сигнал во время изменения кода, чтобы увидеть, что добавляется.

Чтобы изменить код:

  • Нажмите кнопку «P».

  • Введите заводской код.

  • Введите новый код.

Когда мы смотрим на сигнал:

  • Некоторые странные кастомные формы отправляются во время нажатия «P».

  • Плата клавиатуры отправляет заводской код с командным байтом 0x74.

  • Чип внутри отвечает, действителен заводской код или нет (заводской код печатается в руководстве, генерируется случайным образом и не может быть изменен)

  • Клавиатура отправляет новый код с командным байтом 0x75

Я также фиксирую обмен сигналами во время загрузки, так что теперь мы можем сопоставить некоторые функции:

Байт команды

Функция

Предоставленный код

0x71

Попытка разблокировки

Код, чтобы попробовать

0x74

Попытка инициировать изменение кода

Заводской код

0x75

Завершить процесс изменения кода

Новый код

0x78

Загрузка

00000 (ноль)

Но что произойдёт, если вы напрямую пошлёте новый кодовый сигнал, пропустив шаг заводского кода?

...код перезаписывается!!! Таким образом, мы можем сбросить код, не зная об этом.

Теперь мы можем открыть любой электронный сейф Sentry Safe & Master lock за секунду.

Доказательство

В качестве доказательства концепции я создам карманный инструмент.

Возьму микроконтроллер Atmega328, 8бит AVR на 8МГц (без кварца). Залив программу на свою флешку, припаиваю две батарейки CR2032, кнопку и два пина.

Программа просто отправит сигнал сброса, чтобы установить фиктивный код, а затем отправит сигнал разблокировки, чтобы открыть сейф.

И всё это устройство я поместил в ручку! В итоге у меня получился настоящий инструмент для пентеста! (здесь у нас непереводимая игра слов, потому что ручка "pen" стала инструментом для пентеста "pen-test''

Как это использовать:

  • Снимите крошечный винт у сейфа.

  • Прикоснитесь к черному и зеленому проводам двумя кончиками ручки.

  • Нажмите кнопку.

  • Сейф открыт!

Демонстрация

Как исправить

Чтобы устранить эту уязвимость, проверьте другой мой репозиторий.

Спасибо за внимание!


Что ещё интересного есть в блоге Cloud4Y

→ Малоизвестный компьютер SWTPC 6800

→ Сделайте Linux похожим на Windows 95

→ Как распечатать цветной механический телевизор на 3D-принтере

→ WD-40: средство, которое может почти всё

→ Quantel Paintbox — устройство, изменившее мир телевизионных передач

Подписывайтесь на наш Telegram-канал, чтобы не пропустить очередную статью. Пишем только по делу.

Комментарии (37)


  1. staticmain
    07.06.2022 14:46
    +16

    А у этого сейчас вот так легко снимается голова замка и дает возможность тыкать в себя щупами?


    1. dvserg
      07.06.2022 14:57
      +2

      Да там видимо пластиковые защелки - свернуть пару минут. Наверное производитель больше надеялся на недоступность внутреннего контроллера.


    1. DrPass
      07.06.2022 14:59
      +4

      Даже если бы легко не снималась, в такой конструкции можно и стамеской пинпад сковырнуть, чтобы до проводов добраться.


    1. Aleksandr-JS-Developer
      07.06.2022 15:01
      +3

      ... Тем более, что вся начинка (которая "принимает решения") в голове. По-хорошему, в голове нужно делать только ввод/вывод, а обработка уже внутри. Это как поставить сервер в гараж к хакеру и потом удивляться, что сервер неправильно шлёт сетевые запросы. Причём, хакеру даже не нужно вмешиваться в начинку сервера.


      1. AKudinov
        07.06.2022 15:27
        +1

        Вроде же, решение принимается на контроллере соленоида, который внутри двери стоит. "Голова" только коды нажатых клавиш отсылает.


      1. DrPass
        07.06.2022 15:31
        +6

        Ну как бы собственно «принятие решений», открывать или нет — там в правильном месте, в контроллере прямо на соленоиде. Но вот проверку старого пароля перед записью нового они почему-то сделали на пинпаде. Наверное, думали «это же надо протокол обмена усложнять, сразу отправлять и старый, и новый код в одном пакете, и ответ обрабатывать. Да ну нафиг, все равно никто не полезет проверять»


      1. garageman
        07.06.2022 20:23
        +2

        Разобрал ради интереса аналогичный китайский сейф. Снаружи только клавиатура 4х4, внутрь уходит шлейф на 8. Только кнопки.


    1. EGiGoka
      08.06.2022 17:08
      +1

      Так это же MasterLock, от них меньшего и ждать не приходится


  1. IDDQDesnik
    07.06.2022 14:56
    +11

    MasterLock? не удивительно. Не советую защищать ничего ценнее использованной туалетной бумаги "замками" данной фирмы.


    1. SergeyMax
      07.06.2022 18:42
      +16

      Это сейф для хранения оружия дома, предназначен он для ограничения доступа детей, и делает это гораздо надежнее, чем ящик с механическим замком. А взломать его за две секунды можно болгаркой, так что для хранения миллионных драгоценностей он все равно не подходит, даже если бы пинпад был подключен по квантовому каналу передачи данных.


    1. FreeRusland
      07.06.2022 21:07
      +4

      Зато креативно, значит в тренде)))

      Большой цифровой кодовый сейф Master Lock
      Если вы хотите защитить свои ценные вещи, такие как наличные деньги,
      конфиденциальные документы, электроника, планшеты, чековые книжки,
      USB-накопители, изображения или устройства хранения данных, не ищите
      дальше. chipdip

      "не ищите дальше" самое разумное решение при выборе сейфа за 80 тысяч рублей :-D


  1. AgentFire
    07.06.2022 16:28
    +11

    MasterLock - любимая тема для LPL


    1. DirectoriX
      07.06.2022 23:00
      +9

      И заголовок у этой статьи такой характерный для LPL… Я надеялся увидеть, как колпачком будут нажимать на кнопку сброса или что-то подобное, а вместо этого не увидел даже ручки как таковой, только корпус от неё. С таким же успехом можно было бы термита в корпус тостера насыпать и расплавить этот сейф к чертям — «Как я уничтожил сейф с помощью тостера»


  1. AlexanderS
    07.06.2022 22:11

    Производителя я уведомил, но ответа от них так и не получил.

    В принципе, это всё, что нужно знать об этом производителе сейфов.


  1. Dark_Purple
    07.06.2022 22:34
    -9

    Мамкин хацкер))


    1. srg27y
      08.06.2022 08:10
      -1

      протів мамкінава паграміста)


  1. ULTRAWEN
    08.06.2022 08:13

    Скорее всего данный бытовой сейф рассчитан на гостиницы/офисы/квартиры где он защищает от мелких воришек, детей и тд. Он точно не рассчитан, что его будет вскрывать высококвалифицированный специалист, а против таких девайсов будут уже другие сейфы с более высокой стоимостью. А так, статья интересная, как технический челлендж норм.


    1. Tarakanator
      08.06.2022 11:19

      я так понимаю при подходящем инструменте этот сейф легко вскрывается ребёнком. Какой высококвалифицированный специалист?


      1. iig
        08.06.2022 11:25

        Не каждый ребенок схватит ардуину и сделает себе отмычку.


        1. MAXH0
          08.06.2022 11:56
          +10

          Будем учить! ;)


        1. Tarakanator
          08.06.2022 12:04
          +2

          вы думаете незаконопослушные граждане сами себе весь инструмент делают?


  1. OptimumOption
    08.06.2022 12:18
    +1

    Статья из серии "Как заинтересовать идиота"? >_<


  1. Aquahawk
    08.06.2022 12:29
    +4

    Все подобные сейфы с соленоидами элементарно открываются ударом сверху, пример тут: https://youtu.be/Pe8qQLCO_2c?t=58 с 58 секунды если не сработает.


    1. StanislavHabr
      09.06.2022 12:06

      Когда в моём сели батарейки, а мастер-ключ был давно потерян - я именно так цвой сейф и открыл - сильно хлопнув по нему ладонью сверху.


  1. Pab10
    08.06.2022 12:45
    +12

    This is the Lockpicking Lawyer, and what I have for you today...


    1. shoguevara
      08.06.2022 12:57

      Тоже про него сразу вспомнил и даже хотел порекомендовать автору скооперироваться с ним


      1. smanioso
        08.06.2022 15:53

        Визуально та же самая модель https://www.youtube.com/watch?v=2guvwQvElA8


  1. rdo
    08.06.2022 12:49
    -1

    Ну надо быть снисходительными, механические замки существуют около пятисот лет, а электронные лет пять-десять. Через пару десятилетий научатся делать нормальные электронные замки, без этих детских болячек.


    1. DMGarikk
      08.06.2022 15:53

      а электронные лет пять-десять

      у меня очень похожий сейф в офисе стоял в 2009 году, 12 лет назад
      судя по всему ничего не поменялось


  1. BiW
    08.06.2022 13:49

    Господа, обсуждающие надежность данного или любого другого сейфа. Любой, абсолютно любой сейф при наличии достаточного количества времени и физического бесконтрольного доступа элементарно вскрывается любым ребенком, который чисто физически сможет удержать УШМ в руках... Поэтому, с точки зрения стойкости ко взлому, все сейфы в данной весовой категории, по факту, идентичны. Вне зависимости от конструкции замка или реакции производителя на письма.


    1. Flat_Earth_Omen
      08.06.2022 14:36

      Ну даже если это всё театр безопасности, то к данному конкретному "артисту" у "Станиславского" возникнет известная реакция... Ну уж можно было постараться вжиться в роль получше, кмк.


    1. Aquahawk
      08.06.2022 15:08
      +2

      На самом деле не любой. Ну т.е. при наличии бесконечного количества времени и бесконечного количества дисков и болгарок конечно любой, но есть сплавы которые будут ну очень плохо пилиться болгаркой и не факт что ресурса бытовой блогарки в принципе хватит для вскрытия. Речь конечно не про бытовые сейфы. На то у них и существуют классы взломостойкости чтобы как-то классифицировать. Ибо просто факта что любую защиту можно вскрыть ценнсть применения такой защиты к 0 не приходит.


      1. BiW
        08.06.2022 16:01
        +1

         но есть сплавы которые будут ну очень плохо пилиться болгаркой и не факт что ресурса бытовой блогарки в принципе хватит для вскрытия. 

        Вообще-то даже титан неплохо режется болгаркой. Главное диски хорошие, от 3М, к примеру, для высокопрочных сталей.

        На то у них и существуют классы взломостойкости чтобы как-то классифицировать. 

        На самом деле там, где хранится что-то действительно ценное, сейф охраняется 24/7, просто потому, что никто не строит иллюзий касательно взломостойкости.


    1. aPiks
      08.06.2022 15:26

      Да как бы любую защиту можно обойти. Смысл защиты в том, чтобы сделать атаку нецелесообразной. Либо слишком долгой, либо слишком дорогой, а в идеале и то и другое. Смысл этого сейфа не в том, чтобы его нельзя было болгаркой распилить за 10 минут, а в том, чтобы дети не нашли оружие дома, или в гостинице положить кошелек внутрь, чтобы случайно зашедшие люди в комнату не забрали. И статья собственно говорит, что с помощью отвертки и маленького устройства сейф можно вскрыть за 2 минуты и без шума, что делает его применение почти бессмысленным.


      1. BiW
        08.06.2022 16:40
        +1

        Смысл этого сейфа 

        в том, чтобы дети не нашли оружие дома, или в гостинице положить кошелек внутрь, чтобы случайно зашедшие люди в комнату не забрали.

        И статья собственно говорит, что с помощью отвертки и маленького устройства сейф можно вскрыть за 2 минуты и без шума, что делает его применение почти бессмысленным.

        А статья вам не говорит, что создание данного устройства заняло отнюдь не 2 минуты? У меня оружейный сейф вообще на почтовые замочки закрывается - от детей вполне хватает...


        1. aPiks
          08.06.2022 16:46
          +1

          Вы это устройство создаёте не в гостинице, а дома. Условно говоря, вы останавливаетесь в гостинице, замечаете палёный сейф, а в следующий раз забираете у уборщицы мастер ключ и гуляете по всем комнатам, пока отдыхающие валяются на пляже.


  1. mr_faza77
    08.06.2022 14:36

    хмм, довольно интересно