
Однажды вечером я, как обычно, листал ленту одного синего маркетплейса и случайно наткнулся на электронный замок со сканером отпечатка пальца. По описанию — почти идеальное устройство за небольшие деньги: биометрия, защита от воды, какая-то «уникальная» микросхема. Звучит убедительно, но исследователь на то и исследователь, чтобы не принимать рекламные обещания на веру, а потому уже на следующий день замок лежал у меня на столе. Ну, а дальше сработал знакомый принцип: где один интересный девайс, там быстро появляется пара других…
Меня зовут Астафиев Денис, я ведущий специалист по аппаратным исследованиям в Бастионе. По работе я регулярно разбираю самые разные устройства, чтобы проверить, насколько можно доверять тому, что производитель обещает на коробке. Сегодня будем смотреть сразу на три замка с биометрией и искать слабые места в их защите.
Сразу оговорюсь: цель этой статьи — не любой ценой «дожать» дешевый китайский замок до уровня лабораторного исследования. Наоборот, мне хочется на простом и доступном примере показать, как обычно строится базовый аудит аппаратной безопасности и почему начинать его стоит совсем не с самых сложных атак.
От простого к сложному
Как известно, безопасность любого устройства определяется не самой навороченной функцией, а самым слабым звеном во всей системе. Можно сколько угодно рекламировать биометрию и рассказывать об инновационности замка, но если его корпус сделан из фольги, все эти преимущества мгновенно теряют смысл.
Поэтому в hardware security обычно двигаются от простого к сложному. Сначала проверяют то, что почти ничего не стоит: документацию, стандартные сценарии использования, конструктивные особенности, сервисные режимы, поведение при сбоях и доступные снаружи интерфейсы. И только если быстрые пути ничего не дают, имеет смысл доставать «тяжелую артиллерию». В нашем случае к ней можно отнести полноценный обход биометрии через имитацию отпечатков и лабораторный анализ микросхем.
Итак, начнем с самого «приземленного» этапа — первичного осмотра и инвентаризации всего, что потенциально пригодится в дальнейшей работе.
Проводим первичный осмотр и составляем карту поверхности атаки (Attack Surface Mapping)
Первым на стол отправляется безымянный биометрический замок стоимостью около 1000 рублей (согласитесь, цена уже «обнадеживает»). Аккуратно достаем устройство из коробки — она нам еще пригодится — и смотрим, что именно купили.

Комплект соответствует описанию: сам замок со сканером отпечатка и кабель для зарядки. Корпус металлический — уже +15 social credit безымянного китайского конструктора, потому что на механической прочности в этом сегменте экономят регулярно.

Правда, переоценивать эту прочность не стоит, так как защита всё же, скорее, символическая и вряд ли переживет близкое знакомство с молотком или кирпичом, которыми навесной замок можно просто сбить. Но об этом чуть позже.
Второй подопытный — замок PS-Link PS-SY12 за 1750 рублей. Здесь уже есть хотя бы узнаваемый бренд, причем российский. В коробке лежат инструкция, сам замок и пара батареек. Больше всего внимание привлекают пластиковые накладки с обеих сторон корпуса, но и к этому вопросу мы еще вернемся.

Достаем из коробки третьего испытуемого — замок ABUS Touch стоимостью 2500 рублей. На первый взгляд, тут точно всё должно быть в порядке: здесь вам и международный производитель, и практически монолитный корпус из прочного металла, и даже награда за дизайн устройства от Red Dot за 2022 год. Тем не менее, предлагаю не делать поспешных выводов: вдруг что-нибудь да найдется?

Теперь определимся с методикой тестирования. Для всех трех замков поверхность атаки удобно разложить на четыре основных вектора:
Логический вектор: аварийные коды, сервисные режимы, сбросы и другие предусмотренные разработчиком сценарии.
Механический вектор: воздействие на корпус, зазоры в шахте дужки, возможность добраться до запорного механизма и другие способы физической манипуляции.
Вектор интерфейсов (локальный/беспроводной): зарядный USB-порт, возможные скрытые линии данных, тестовые площадки и передача данных по Bluetooth.
Биометрический вектор: сам датчик отпечатка пальца и возможные способы обойти его проверку.
Карта готова — можно двигаться по ней по порядку.
Вектор 1: логический
Начнем с сервисных сценариев и логики работы устройства. Такие вещи часто недооценивают, хотя потенциальная лазейка иногда буквально описана на коробке или в инструкции — той самой, которую большинство владельцев читает по диагонали, если вообще читает.
Испытуемый 1. Безымянный замок
На упаковке первого замка, например, прямо упоминается секретный код для «экстренных» ситуаций. Для владельца это удобная функция восстановления доступа, а для нас — очевидный кандидат на проверку.

Посмотрим, что по этому поводу говорит инструкция:

Коротко перескажу, как здесь работает разблокировка по аварийному коду. Когда зарегистрированный отпечаток не подходит, удерживаем любой палец на датчике до появления белого индикатора. Затем замок переходит в режим ввода кода: на зеленом индикаторе набираем первую часть комбинации количеством нажатий, после синего — вторую. Например, код 5–6 означает пять нажатий на первом этапе и шесть на втором.
И вот здесь начинается самое интересное: в той же инструкции прямо указан заводской аварийный код — 33. Если владелец его не поменял, этого уже достаточно, чтобы разблокировать устройство.
Мало того, я бы не ставил большие деньги на то, что большинство владельцев меняет заводской код: как мы уже определили, инструкции читают, мягко говоря, далеко не всё. Но дадим пользователям шанс и посмотрим, насколько жизнеспособен более сложный сценарий — обычный перебор.
Оценим пространство ключей. Предположим, пользователь задает код из двух чисел от 1 до 20 — больше двадцати раз подряд нажимать на сенсор мало кто захочет, хотя такая возможность есть. Получаем всего возможных комбинаций.
Для брутфорса это откровенно смешная цифра. Даже если одна попытка с учетом всех пауз занимает 15–20 секунд, полный перебор в худшем случае укладывается примерно в два с половиной часа. На практике нужный код может найтись заметно раньше — особенно если владелец выбрал предсказуемую комбинацию.
Если же посмотреть с точки зрения методологии, то данный пример отлично показывает, что функция, задуманная для удобства владельца, может расширять поверхность атаки. Аварийные и recovery-функции действительно делают эксплуатацию удобнее, но именно они часто становятся ахиллесовой пятой в системе защиты: чем проще ими воспользоваться, тем легче открыть замок в обход штатной разблокировки.
Есть и еще одна причина обращать внимание на такие детали. В недорогих устройствах одного класса одни и те же решения часто кочуют из модели в модель: разработчики используют похожие механизмы и наследуют одинаковые компромиссы. Поэтому после первой находки логично проверить, не спрятан ли похожий аварийный режим и во втором замке.
Испытуемый 2. PS-Link PS-SY12
В инструкции PS-Link об аварийном коде ничего не сказано. Но отсутствие описания еще не означает отсутствие самой функции, так что попробуем действовать по аналогии.

Зажмем датчик отпечатка на некоторое время… Бинго! Вот и возможность ввести код.
Несколько часов неспешного перебора — и комбинация находится: 67. Поколение альфа, очевидно, справилось бы быстрее.

Однако проблема не только в том, что код короткий и предсказуемый. Судя по всему, изменить его на замках данной модели вообще нельзя — по крайней мере, я такой возможности не нашел. В результате аварийный механизм превращает замок, скорее, в психологическую защиту, чем в реальное средство контроля доступа.
У ABUS Touch аварийный сброс тоже предусмотрен, но реализован заметно аккуратнее: для него сначала требуется нормальная авторизация по двум первым зарегистрированным отпечаткам. В логическом векторе этот замок однозначно выглядит лучше остальных.
Вектор 2: механический
С логикой уже нашелся как минимум один рабочий путь, но он может оказаться далеко не самым быстрым. Следующий вопрос очевиден: насколько хорошо защищена механика?
Пробуем подручные средства и грубую силу
Разбирать устройства пока не будем. Сначала проверим, можно ли открыть их прямо в собранном виде, используя только доступ к корпусу и подручные средства.
Испытуемый 1. Безымянный замок

Еще раз посмотрим на коробку первого «пациента». Производитель гордо сообщает, что ключ для открытия не нужен. И действительно: ни личинки, ни нормального отверстия под ключ здесь нет (micro-USB не считаем), да и сам ключ не положили. Но кто сказал, что мы не можем сделать свой?
Чтобы понять, что именно сейчас произошло, придется ненадолго отвлечься на устройство обычного навесного замка.
В общих чертах схема выглядит так:

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

Также для изготовления импровизированных (и не очень) шимок часто используется алюминий, который можно найти в банках из-под газировки.
Вывод здесь предельно простой: начинка замка может быть сколь угодно «умной», но если он открывается скрепкой, его реальная стойкость определяется именно этой скрепкой, а не качеством сканера биометрии.
Решение данной проблемы также давно известно. В более качественных навесных замках дужку блокируют с двух сторон стальными шариками, которые входят в пазы и не позволяют просто отжать фиксатор снаружи.

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

Но здесь производитель решил сэкономить и оставил всё в самом простом исполнении. Очевидно, зря.
Кстати, был проверен еще один доступный нам способ физического взлома: попробовать открыть запирающий механизм при помощи магнита. К сожалению (или к счастью), элемент запора остался на месте, что было подтверждено после вскрытия замка. Механизм изготовлен из немагнитного материала (предположительно, дюралюминий), так что ловить тут нечего.
Испытуемый 2. PS-Link PS-SY12
Теперь вернемся к пластиковым накладкам PS-Link. Стоило открутить винт, удерживающий батарейный отсек, как задняя крышка довольно легко подцепилась и начала отходить от корпуса.

Через образовавшуюся щель видны провода моторчика, который открывает замок. Дальше всё довольно прямолинейно: достаточно аккуратно добраться до этих проводов и подать питание на привод, а если еще и действовать аккуратно, то никто даже не заметит, что замок вскрывали. Увы, замок под российским брендом оказался не сильно надежнее безымянного аналога.
Третий испытуемый, ABUS Touch, на этом этапе исследования оказался самым стойким. Открыть его подручными средствами, не разбирая корпус (и ничего не зная о его внутреннем устройстве), не удалось.
Разбираем замки
Теперь можно переходить к внутренней компоновке. Даже если замок не поддается «быстрой» атаке снаружи, окончательно оценить качество конструкции получится только после разборки.
Испытуемый 1. Безымянный замок
У первого замка задняя крышка держится на защелках и дополнительно фиксируется винтом, спрятанным в шахте дужки. Пока замок закрыт, до него не добраться, поэтому снять крышку без повреждений не получится.

А если попробовать силовой вариант? С кусачками, скальпелем и отверткой на вскрытие уходит примерно 5–10 минут. И всё же здесь производителю можно поставить маленький плюс: он хотя бы попытался сделать доступ к внутренностям не совсем тривиальным.
Под внешней крышкой обнаруживается еще одна — уже с защитой от пыли и влаги уровня IP54 и изоляцией от замыкания на корпус. Откручиваем четыре винта и, наконец, добираемся до внутренностей.

Далее остается лишь отодвинуть запор дужки, и дело сделано.
Если идти дальше по сценарию прямого вмешательства, замок можно открыть и электрически — подав питание напрямую на мотор привода. Для срабатывания оказалось достаточно порядка 3,3 В.
Очевидно, что данный способ — не вариант для быстрого уличного вскрытия, но не показать его было нельзя: даже при самом «прямом» подходе добраться до внутренностей замка не так уж и сложно, что в очередной раз ставит под сомнение какую-либо безопасность данного замка. Учитывая стоимость девайса, это было предсказуемо, но подобные проблемы встречаются и в куда более дорогих устройствах.
Испытуемый 2. PS-Link PS-SY12
Здесь задняя крышка тоже держится на одном болте в шахте дужки.

Открутив его и отщелкнув клипсы крышки, мы получаем доступ к задней части замка.

Провода мотора, к которым мы уже подключались на предыдущем шаге, аккуратно приклеены на скотч. Сама же внутренняя крышка-ложемент держится на нескольких винтах. Откручиваем их и вскрываем внутренности замка.

Попытка грубо выбить запорный механизм обречена на провал — этому мешает сама конструкция замка. Трюк с намагничиванием тоже не удался, так как поворотный механизм, опять же, выполнен из немагнитного материала.
Испытуемый 3. ABUS Touch
Первым делом снимем нижнюю крышку, закрывающую батарейный отсек. Под ней видим еще два болта: один изначально скрыт за гарантийной наклейкой, второй — традиционно притаился в шахте дужки.

Откручиваем их тоже, и весь внутренний блок с мотором и плата управления буквально вываливаются наружу, открывая путь к запирающему механизму.

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

Самое интересное же скрывается в конструкции платы — контакты, отвечающие за управление приводом. Они расположены в самом низу платы.
Здесь мы, наконец, видим вектор атаки, который позволяет вскрыть третий замок. Оказывается, в зазор между внутренней частью и корпусом устройства можно просунуть тонкие провода и подать питание напрямую на привод, что приведет к открытию замка.
Этот способ придумали не мы — его первым обнаружил другой независимый исследователь. Вот как это выглядит на практике:
Для устранения такого дефекта достаточно залить опасные лазейки компаундом или эпоксидной смолой, но производитель, к сожалению, этого не сделал.
Итак, мы протестировали два из четырех векторов атак. Не все «быстрые» гипотезы подтвердились: сценарий с использованием магнитов, например, не сработал. Но для исследователя это тоже результат, и свой подход был найден ко всем замкам.
Вектор 3: интерфейсный
С механикой разобрались. Теперь возвращаемся к нашей карте поверхности атаки и смотрим, что можно получить через электронные интерфейсы.
Данный вектор хорош тем, что позволяет заглянуть внутрь устройства уже на уровне электроники. Нас интересует всё, через что замок может общаться с внешним миром или с разработчиком: отладочные точки, сервисные каналы, скрытые линии обмена, проводные интерфейсы и беспроводная связь. Иногда именно здесь находится самый «инженерный» путь к внутренней логике.
Испытуемый 1. Безымянный замок
Начнем снова с безымянного замка. Компоновка платы вполне типична для бюджетного IoT-устройства: управляющий чип, драйвер мотора, несколько тестовых площадок, четырехконтактный интерфейс и модуль сканера отпечатка на обратной стороне.

Дальше работаем по обычному пайплайну аппаратного исследования. Сначала визуально определяем компоненты и линии питания, затем ищем возможные отладочные интерфейсы — UART, SWD, JTAG или хотя бы сервисные тест-пады. Землю и питание находим прозвонкой, а оставшиеся линии наблюдаем логическим анализатором в разных режимах работы устройства.

Активность на части контактов действительно есть: обмен появляется, когда замок взаимодействует со сканером отпечатка. Но ничего похожего на открытую сервисную консоль, интерфейс прошивки или другой очевидный канал разработчика обнаружить не получилось.
Отдельно я проверил внутренние USB-линии и внешний micro-USB, который доступен даже без вскрытия корпуса. Полезного канала данных там тоже не нашлось. Сам по себе этот факт еще не делает замок защищенным, но самый очевидный путь к внутренней логике производитель, по крайней мере, не оставил открытым.
Напоследок посмотрим на основной чип. Производитель не соврал: микросхема действительно оказалась нестандартной. Удалось установить лишь вендора — Jieli, который известен внутренними маркировками и почти полным отсутствием публичной документации. Даже в профильных репозиториях, где энтузиасты собирают сведения о продукции этой компании, наш чип обнаружить не удалось.
Следующим шагом уже глубокого реверса мог бы стать делейеринг — вскрытие корпуса микросхемы и изучение кристалла под микроскопом. Для замка стоимостью в пару тысяч рублей это, мягко говоря, избыточно.
Зато на плате обнаружилась любопытная деталь: место под Bluetooth-антенну предусмотрено, хотя в нашей версии она не распаяна. Уязвимости здесь нет, но это интересная «заметка на полях» про подход производителей бюджетной электроники: одна и та же аппаратная база используется сразу в нескольких SKU. Одна модель выходит без беспроводной связи, другая получает BLE и приложение.
Испытуемый 2. PS-Link PS-SY12
У второго замка часть интерфейсной поверхности атаки доступна еще до вскрытия: устройство штатно работает по Bluetooth. По инструкции им можно управлять через Tuya или совместимое приложение — через тот же канал выполняются привязка, управление и регистрация новых отпечатков.

Для исследования куда важнее то, что замок умеет открываться через приложение, а значит, между телефоном и устройством идет Bluetooth-обмен. Я попробовал перехватить его при помощи UberTooth, но без результата: выделить пакеты, отвечающие именно за команды замку, не получилось. Скорее всего, задача решаемая, однако дальше пришлось бы серьезно погружаться в реверс и отладку Android-приложения — область, в которой я, честно говоря, чувствую себя не настолько уверенно, чтобы тратить на нее дни ради этого замка.
Поэтому переходим к плате. Внутреннюю крышку-ложемент мы уже сняли, остается открутить еще пару винтов, удерживающих переднюю часть, и электроника оказывается перед нами.

Здесь компонентов уже заметно больше, чем у первого замка. Для нашего исследования важны три вещи:
Группа тест-падов, на которых разведены USB-линии и питание.
Еще один чип Jieli, к которому ведут эти площадки. Его маркировка тоже не находится обычным поиском.
Отдельная микросхема со спиленной маркировкой — вероятнее всего, она связана с Bluetooth и интеграцией с Tuya.
Тест-пады оживают только при работе со сканером отпечатка и, похоже, используются как диагностический интерфейс. Ничего похожего на удобный путь к прошивке или управлению замком они не дают, так что идем дальше.
Испытуемый 3. ABUS Touch
У ABUS Touch исследование интерфейсов тоже не принесло неожиданного результата. Если вынести за скобки уже найденное неудачное расположение контактов привода, плата сделана довольно аккуратно. Здесь есть USB-тест-пады с поведением, похожим на два предыдущих замка, а также несколько дополнительных площадок. Я пробовал подавать на них команды и наблюдать за ними во время работы устройства, но ни ответа, ни заметной активности получить не удалось.
В итоге интерфейсный вектор не дал критического обхода ни для одного из трех устройств. Открытых debug-консолей, очевидных сервисных каналов или тривиально эксплуатируемого беспроводного интерфейса найти не получилось. Это не доказательство безупречной электроники, но на уровне «быстрого входа» здесь всё заметно лучше, чем в механике.
Вектор 4: биометрический
До биометрии мы добрались уже после того, как нашли несколько более простых способов открыть замки, поэтому глубоко уходить в атаки на датчик не будем.
Проверим самый очевидный вариант: сработает ли сканер на следах и остаточном тепле после того, как к нему приложил палец владелец? Нет — ни один из трех замков на такую уловку не поддался.
Конечно, существуют более сложные способы обхода биометрии: искусственные слепки, masterprint-подходы, ошибки в регистрации и обработке отпечатков. Но здесь это уже, скорее, академический интерес, так как все показанные выше векторы делают сложную атаку на сенсор просто избыточной.
Заключение
Очевидно, что от достаточно специфических устройств стоимостью в пару тысяч рублей вряд ли кто-то ждет взломостойкости по ГОСТу. Тем не менее, низкая цена всё равно не оправдывает конструктивные и логические ошибки, которые сводят защиту к нулю. Зато на примере этих трех замков хорошо видно, как на практике работает базовый аудит аппаратной безопасности: сначала простые сценарии и механика, затем интерфейсы — и только после этого более дорогие и сложные атаки. Надеюсь, этот разбор оказался не только любопытным, но и полезным.
На этом всё. Берегите себя, не верьте упаковке на слово — и до следующего устройства, которое захочется разобрать.

PURP — Telegram-канал, где кибербезопасность раскрывается с обеих сторон баррикад
t.me/purp_sec — инсайды и инсайты из мира этичного хакинга и бизнес‑ориентированной защиты от специалистов Бастиона

