Автоматический перебор комбинаций в механических сейфовых замках



    На конференции 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 дня чистого брутфорса.

    Файлы с дизайном устройства и исходный код для управления приводом авторы скоро опубликуют в открытом доступе. По крайней мере, обещают.
    Support the author
    Share post

    Comments 38

      +20
      На фотографии процесс подбора ключа к особо суровой модели холодильника?)
        +5
        ночная модель
        +65
        Я успел, я успел!
          –1
          Он же открывается ровно за две итерации. Простой алгоритм.
            +8
            В детстве мне этого было непонятно, я так и не смог его пройти.
              +1
              Мне в детстве тоже было не очень понятно, поэтому пришлось написать на QBasic брутфорс. Работало :)
                0
                Нажимает случайные точки до получения результата?
                  0
                  Почему случайные? Т.к. два раза переключать рубильник смысла нет, то весь брутфорс сводится к перебору 16-битной маски.
                    0
                    Почему не имеет смысла? Видимо, неверно понял смысл головоломки.
                      0
                      Переключение рубильника делает NOT по строке и столбцу. Соответственно, последовательность дергания и повторные переключения смысла не имеют.
                        0
                        А можно вкратце суть алгоритма? И как программа определяла что уже хватит?
                          0
                          У нас есть исходное состояние сейфа из 16 бит (0 — горизонтальный рубильник, 1 — вертикальный).
                          Манипуляции над сейфом так же описываются 16 битами (0 — соответствующий рубильник не трогаем, 1 — переключаем).
                          При переключении рубильника в процессе исполнения манипуляции так же переключаем биты состояния, соответствующие строке и столбцу этого рубильника в сейфе (эмулируем поведение игрушки).
                          Задача считается решенной, когда в результате манипуляций получаем значение состояния равное 0 (все рубильники горизонтальны).

                          Таким образом, нам нужно проверить всего 2^16 вариантов манипуляций (значения 0 — 65535).
                            0
                            Хм. Я пробовал предельно простой алгоритм. Выписываем координаты всех неправильных вентилей. Игнорируя текущее значение, нажимаем все выписанные вентили. Повторяем еще раз и все. Две итерации.
                              0
                              Вот точно так же делал :)
                                0
                                правильные — 0, неправильные — 1. Сумма строк и столбцов в точке пересечения вентиля четная — пропускаем. Нечетная — поворачиваем. ЕМНИП за один проход открывает.)
                      +1
                      Я на Delphi написал, оно само тыкало мышкой в вентили, правда случайно прошёл во время отладки :)
                  –48
                  Что за ребячество? Зачем это здесь? Как это относится к устройству в статье?
                    +36
                    Вам знакомо понятие «культурная отсылка»? На первом фото – холодильник, статья – про вскрытие сейфов. На моей картинке изображен довольно известный в узких кругах сейф на холодильнике. Настолько известный, что появился бы в комментариях к этой статье и без меня.
                      –17
                      Конечно знакомо, но мне также знакомы понятия «сорим очевидными мемами в комментариях» и «первонах». Чем, в том числе, является ваш комментарий.
                        +11
                        Хорошо, я попрошу администрацию унести этот коммент на GeekTimes как несоответствующий технической направленности Хабра.
                      +2
                      А давайте попробуем во всех сферах жизни убрать, кхм, «ребячество» и будем бездушными роботами? Как в Эквилибриуме — это же идеальная жизнь.
                    +1
                    Немного оффтоп: Подскажите, пожалуйста, как называется головоломка, которая изображена на картинке?
                      +1
                      Lights Out там есть много различных вариантов, встречается название Turn Off
                        0
                        О, большое Вам спасибо!
                    +2
                    что даёт 4,6 дня чистого брутфорса

                    Интересно, если эту штуку соединить с наработками Блейза (его исследование "Safecracking for the computer scientist"), насколько сократится время вскрытия? Подозреваю, что можно будет успеть вскрыть холодильниксейф за ночь:)
                      –4
                      >>что даёт 4,6 дня чистого брутфорса

                      Как-то долго, гораздо быстрее так и всего за 60 секунд.

                      www.youtube.com/watch?v=Jeu95rJ2p08
                        0
                        Давно ждал что из игр будут брать дизайн изделий. «А вот эти перила я взял из игры DOOM»
                        • UFO just landed and posted this here
                            0
                            стандарта UL Group 2, где комбинация состоит из трёх цифр от 0 до 9

                            Читайте внимательнее ;)
                              +1
                              Как тогда в последнем разряде может быть 20, если разряд — одна цифра?
                                0
                                В данном случае имеется в виду, что «разряд» = «группа 0-99». Групп три. «Разряд» здесь двухсимвольный.
                            +1
                            Интересно будет, если опубликуют. Пока не пойму, как они с помощью датчика Холла определяют, открыт ли сейф.
                              +1
                              Согласен, самое интригуещее в статье — как они датчик Холла используют.
                                0
                                Может, они банально проверяют, что мотор потерял возможность крутиться в одном из направлений? Более заковыристый вариант — датчик «ловит» момент, когда отпирающая деталь падает в паз на дисках (на картинке — крючок с фиолетовой полосой).
                                image
                                0
                                Заедать тоже будет, как в Payday?
                                  +1
                                  Осталось дополнить севрхчувствитеьным микрофоном, для считывания открывания сувальды. Или эти замки иначе устроены?
                                    0
                                    Ожидал, что в статье будет именно про микрофон

                                  Only users with full accounts can post comments. Log in, please.