Автоматический перебор комбинаций в механических сейфовых замках
На конференции Ruxcon в Мельбурне двое австралийских хакеров показали самодельное устройство на Arduino, которое подбирает комбинации на механических замках в некоторых сейфах.
Пентестеры Джей Дэвис (Jay Davis) и Люк Янке (Luke Jahnke) объясняют, что оборудование для взлома таких замков стоит дорого и отсутствует в свободной продаже. Они же с помощью 3D-печати и Arduino изготовили «устройство автонабора» из совсем дешёвых деталей общей стоимостью всего $150. Устройство способно подобрать код к механическому замку стандарта UL Group 2, где комбинация состоит из трёх цифр от 0 до 99, с допустимостью ошибки ±1 в каждом разряде.В конструкции использован шаговый электродвигатель, который подключается к плате Arduino через модуль расширения.
Для начала нужно было решить три проблемы: 1) крепление шагового электродвигателя к замку; 2) как проверить точность поворота ротора; 3) как тестировать устройство.
Для решения третьей проблемы взяли простенький замок, исключительно для проверки концепции.
Первую проблему решили с помощью распечатки самодельного адаптера. Обошлись без покупки 3D-принтера и использования сложных редакторов вроде AutoCAD. В интернете нашли простенькую, но подходящую программу для 3D-дизайна Tinkercad.
Переходник от шагового привода к замку готов! Его распечатали у знакомых, хотя можно воспользоваться и каким-нибудь из коммерческих сервисов, всё равно обойдётся недорого.
Для управления написали код для управляемого перемещения ротора на нужный угол. Программа даже поддерживает классные функции вроде ускорения. Теперь можно указывать числовую комбинацию с Arduino, а ротор поворачивался в нужное положение.
После первоначального тестирования привода решено было купить настоящий сейфовый замок. Выбор пал на модель La Gard 3330. Для него повторили ту же процедуру с распечаткой адаптера.
Нужно было ещё придумать способ, как определять, что замок открыт. Для этого разработчики применили магнитные датчики, использующие эффект Холла.
Конструкцию для крепления к сейфу позаимствовали из игры Payday 2.
В Tinkercad её разработать не получилось, пришлось использовать SketchUp.
Вот что получилось в итоге.
Дальнейшее понятно: устройство устанавливает комбинацию, проверяет, открыт ли замок, и дальше повторяет цикл. Проверка одной комбинации занимает 4 секунды, так что вряд ли вы уложитесь в одну сессию. Поэтому библиотека поддерживает загрузку комбинаций с SD-карты и работу в несколько сессий с запоминанием уже опробованных комбинаций. Можно создать заранее сгенерированный список наиболее часто используемых комбинаций, таких как даты рождения. Максимально возможное количество комбинаций составляет 100 000 (с учётом особенности спецификаций UL Group 2: запрет на использование цифр от 0 до 20 в последнем разряде), что даёт 4,6 дня чистого брутфорса.
Файлы с дизайном устройства и исходный код для управления приводом авторы скоро опубликуют в открытом доступе. По крайней мере, обещают.