Как взломать аппаратный криптокошелек | Блог Касперского

▍почему это происходит?

  • Компании не проверяют свои системы на предмет наличия в них уязвимостей.
  • Те компании, которые выполняют подобные проверки, обычно не обращают внимания на общедоступные учётные записи своих сотрудников.
  • Те компании, которые проверяют и свои системы, и учётные записи сотрудников (а таких, по грубым оценкам, менее 1%), часто слишком сильно полагаются на автоматические сканеры и не проверяют историю коммитов (то есть — анализируют не всё дерево git, а лишь то, что лежит на поверхности, представленное самой свежей версией кода).
  • И наконец, достаточно часто компании не выполняют ротацию ключей и не применяют двухфакторную аутентификацию. Два этих приёма способны закрыть большинство вышеупомянутых брешей систем безопасности.

▍что делать?

  • Минифицируйте код. Благодаря этому код обфусцируется. Подобная обработка кода обратима, но благодаря ей можно обойти многие автоматические сканеры, что уменьшает потенциальные возможности атаки.
  • Оставляйте в коде только абсолютный минимум ключей и путей к API. В то время как без некоторых из них обойтись не получится, о большинстве из них сказать того же самого нельзя. Оставляйте в коде только те ключи, которым совершенно необходимо в нём присутствовать.
  • Понизьте разрешения, связанные с ключами, до абсолютного минимума. Если вспомнить пример с сервисом картографической информации, то можно сказать, что ключи должны быть такими, чтобы с их помощью можно было бы делать только то, для чего они предназначены, и чтобы пользоваться ими можно было бы только там, где они должны использоваться. Удостоверьтесь в том, что эти ключи нельзя использовать для атаки на систему.
  • Используйте те же инструменты для автоматического сканирования кода, которые используют хакеры. Включайте их в системы непрерывной интеграции. Особенно это касается средств для поиска строковых паттернов, которые работают очень быстро. Используйте простые инструменты вроде grep или gf для поиска строк. Такая проверка кода сродни тестам. Она позволяет убедиться в том, что разработчики не оставляют в коде дыр, которыми может воспользоваться злоумышленник для взлома системы.
  • Внедрите у себя практику код-ревью. Всегда полезно, когда кто-то проверяет ваш код. Все автоматические сканеры мира не способны выявить 100% возможных проблем. Код-ревью — это отличный способ повышения качества и защищённости кода.

▍меры по снижению рисков, связанных с github

  • Сделайте сканирование кода на предмет уязвимостей частью CI-процесса. В этом вам может помочь отличный инструмент GitRob.
  • Сканируйте репозитории сотрудников компании. GitRob выполняет подобные проверки без дополнительных настроек. Для того чтобы это отключить, можно запустить его с флагом no-expand-orgs.
  • Проверяйте историю репозиториев. GitRob, по умолчанию, сканирует 500 коммитов, но вы можете решить пойти ещё дальше, воспользовавшись параметром вида -commit-depth <#number>.
  • Включите на GitHub двухфакторную аутентификацию!
  • Выполняйте, во всех без исключения системах, ротацию ключей доступа, секретных ключей, паролей. Рекомендуется использовать централизованную систему доступа к другим системам наподобие G Suite или Active Directory. Нужно обеспечить применение в подобной системе политик безопасности, касающихся ротации и сложности паролей.

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

Написание keygen’а

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

Открываем рефлектор и ищем код на предмет классов содержащих License или Registration, видим:

При вводе имени и кода по имени вычисляется некий хеш, который и сравнивается с кодом.

Данный хеш использует DES и всякие префиксы

Байты конвертятся в строку с помощью данного метода.

Теперь всё выяснилось, открываем IDE и копируем все необходимые куски кода (или сами реализовываем). Осталось только выяснить, какие значения у Prefix, Suffix и параметры реализации MyDES. Я их приводить не буду, это уже технические детали.

В результате генерируем ключ на любое имя и видим:

Бинго!

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

Использование враппера

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

  1. Указать программе, что лицензия уже проверена
  2. Указать программе, что лицензия корректна

Как это сделать? Я уже упоминал о наличии метаданных в исполняемых файлах в начале, этим и воспользуемся. Посмотрим как запускается программа и как проверяется лицензия:

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

Воспользуемся этим. Сделаем новый проект, добавим Reference на Expresso.exe и запустим его через себя:


Смотрим, что получилось:

Ну кто бы сомневался.

В данном случае всё оказалось просто, но если бы автор программы заменил публичные свойства на приватные, то всего-лишь пришлось бы использовать Reflection для доступа и всё бы свелось к исходной задаче.

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

Но все эти защиты приведут к тому, что злоумышленник будет использовать

Физический взлом программы

Тут уже всё серьёзно. Программа целиком декомилируется в MSIL а из него уже собирается обратно (помните, я писал, что MSIL это такой же язык как и C#?). Для декомпиляции нам понадобится утилита из SDK под названием

ildasm

, а для компиляции компилятор из .NET Framework

ilasm

Запускаем ildasm, открываем Expresso.exe и сохраняем дамп в .il файл. Находим уже рассмотренный метод IsRegistered и добавляем немножко своего кода (без меток):

Потом берём ilasm и собираем всё назад (не забыв подключить ресурсы).

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

Чтобы было понятнее, так это выглядит в рефлекторе, в C#


Т.е. вполне очевидно, что теперь всё будет хорошо:

Немного про код в MSIL: это стековая машина, у которой нет регистров, все операции имеют вид: засунуть в стек нужное количество параметров, выполнить функцию, которая заберёт нужное количество параметров и положит результат. Ну и обратно: установить значение переменной тем, что лежит в стеке. Чтобы лучше понять работу всего этого рекомендую простой приём: пишите маленькую программу на привычном языке, компилируете, смотрите что получилось в MSILe и разбираетесь в конструкциях языка.

При этом некоторые вещи в MSIL можно сделать очень красиво, например поменять две переменные местами — 4 симпатичных строчки (на C# меньше, но некрасиво).

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

Защиты от всего этого безобразия собственно немного: проводить обфускацию или выносить часть логики/проверки защиты в нативный код.

Захват криптоключей mifare и копирование ключей домофонов ironlogic своими руками

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

Внимание! Данная статья создана исключительно в образовательных целях. Напоминаем, что любое проникновение в информационные системы может преследоваться по закону.

У многих, интересующихся технологией MIfare, наверняка есть простейшее устройство для чтения-записи карт и брелоков Mifare, состоящее из модуля PN532 и USB-UART адаптера:

Как взломать аппаратный криптокошелек | Блог Касперского

Путем несложной и недорогой доработки это устройство можно заставить захватывать от
считывателя данные аутентификации, с помощью которых и рассчитываются криптоключи, так необходимые для чтения и копирования. Существуют и серийно выпускаемые приборы для этой цели — SMKey, Proxmark3, Chameleon и ещё некоторые. Это приборы с множеством функций, удобные, но недешевые.

Я предлагаю вашему вниманию более бюджетный вариант на основе подобного «малого джентльменского набора» из модуля PN532 и USB-UART адаптера, позволяющий захватывать данные от считывателя Mifare, например домофона, и рассчитывать криптоключи, с которыми считыватель обращается к метке.

Разработанное устройство в своей основе имеет недорогую, «народную» отладочную плату на основе процессора STM32F103C8T6, прозванную ещё «BluePill» c подключенными к ней модулем PN532 и USB-UART адаптером. Подключается данный агрегат через USB-OTG кабель к смартфону на Андроиде. Собирается всё это в макетном варианте без пайки, с помощью перемычек и имеет примерно такой вид, хоть и непрезентабельный, но вполне рабочий:

Как взломать аппаратный криптокошелек | Блог Касперского

Схему сборки очень проста и представлена в текстовом виде:

PN532 ___________________STM32F103C8T6

SCK_____________________PA5(SPI1_SCK)
MISO____________________PA6(SPI1_MISO)
MOSI____________________PA7(SPI1_MOSI)
SS______________________PB0(GPIO_OUTPUT)
SIGIN___________________PB11(TIM2_CH4)
SIGOUT__________________PA12(TIM1_ETR)
SIGOUT__________________PA15(TIM2_ETR)
VCC_____________________ 5V
GND_____________________GND

USB-UART________________STM32F103C8T6

RX______________________PA9(USART1_TX)
TX______________________PA10(USART1_RX)
5V_____________________ 5V
GND_____________________GND

ВАЖНО! Переключатели интерфейса PN532 должны быть установлены в режим SPI! Прошить STM32 можно с помощью утилиты FlashLoaderDemonstrator через существующий USB-UART адаптер.
Внимание для работы с новой версией прошивки необходимо изменить схему подключения вывода SIGOUT на PA12 и PA15 (Ранее было на PA0 и PA12)!

Вот демонстрация захвата криптоключа от имитатора считывателя домофона(Arduino PN532):

Так как считыватели IronLogic(IL), для работы с которыми и разрабатывалось данное устройство, пытаются прочитать метку с криптоключом, рассчитанным на основе UID данной метки, то этот UID сначала надо задать. Сделать это можно двумя способами – вручную или считать с метки. После этого производим захват и ждем расчета криптоключей.

Следующая вкладка программы «Запись на Classic» использует возможность ранних версий считывателей IL записывать копии на дешевые заготовки Mifare Classic. Этот способ основан на том, что считыватель IL после авторизации посылает домофону не оригинальный UID метки, а информацию, записанную в первом блоке (в общем случае совпадающую с UID оригинала). Для этого мы должны захватить и рассчитать криптоключ метки, которая послужит заготовкой, закрыть с его помощью нулевой сектор, а в первый блок этой метки записать четыре байта UID метки, которая служит прототипом. Для этого нам даже не надо захватывать криптоключ оригинала и снимать его дамп, достаточно узнать его UID, но это справедливо только в том случае, если оригинал — «оригинальный», а не является копией, тогда всё-таки придется читать первый блок и уже его записывать в копию. Чтобы было понятнее, рассмотрим такой пример – предположим, что мы хотим сделать копию оригинального ключа с UID 0xEBD52AC5, который записан и в первом блоке оригинала, на обычную метку Mifare Classic с UID, допустим, 0x12345678. Для этого мы с помощью представленного устройства, метко обозванного одним товарищем «Шайтан-Машиной», находим криптоключ именно для этого UID и именно для того объекта (подъезда, дома …), который нам нужен. Пусть криптоключ получился 0xABCDEF098765, тогда отредактируем нулевой сектор дампа копии следущим образом:

Как взломать аппаратный криптокошелек | Блог Касперского

В первый блок запишем UID оригинала 0xEBD52AC5, а в третий блок шесть байт криптоключа, найденного для этой заготовки — 0xABCDEF098765. Запишем дамп в заготовку, и получим копию домофонного ключа. Примерно так прибор SMKey делает копии IronLogic на обычные Mifare Classic, и именно так поступает данная программа записи. В поле «Код» заносим вручную или считываем с оригинального ключа 4 байта UID, которые будут записаны в 1-й блок копии. Стартуем и, далее следуем подсказкам программы. Сначала считываем UID заготовки, потом подносим устройство к домофону и захватываем данные аутентификации. После окончания расчета программа предложит поднести заготовку для записи данных. Если будет найдено более одного криптоключа, то после записи первого варианта будет дана возможность проверить полученную копию. Если копия не подходит, то следует попробовать следующий рассчитанный ключ, или стереть (привести в исходное состояние) заготовку для дальнейшего использования. Копия может не работать также из-за того, что неправильно определили код, который записывается в 1-й блок копии – например если попытаетесь записать реальный UID не оригинального брелока, а его копии, сделанной по вышеописанному методу.В таком случае надо использовать не UID метки, а данные из 1-го блока, которые можно получить в разделе «Копирование сектора».

Читайте также:  Как восстановить пароль ЭЦП: стандартный пароль ЭЦП по умолчанию

Этот способ не будет также работать для последних версий ПО считывателей IL. В таком случае копию можно сделать, скопировав полностью 0-й сектор ( 4 блока) на заготовку, позволяющую записывать 0-й блок с помощью раздела приложения «Копирование сектора». Здесь также сначала находим криптоключ оригинала, читаем его нулевой сектор и затем пишем на заготовку. Ввиду отсутствия под рукой заготовок ОТР и ОТР-2.0, эта функция пока тестировалась только на заготовках ZERO, хотя новые версии считывателей требуют использовать ОТР-2.0.

Ну и на закуску – раздел приложения «Запись UID» позволяет изменять UID, восстанавливать испорченный 0-й блок и сбрасывать на дефолт криптоключи заготовок ZERO.

Итак – коротко подытожу. Чтобы сделать такое устройство, приобретаем или ищем по своим загашникам модуль PN532, любой из USB – UART адаптеров FTDI, PL2303, CH340 или CP2102, отладочную плату STM32F103C8T6, полтора десятка перемычек, USB-OTG переходник и смартфон(планшет) на Андроиде с OTG. Собираем по вышеприведенной схеме само устройство, прошиваем *.bin файлом STM32 и устанавливаем *.apk приложение из архива
на смартфон. Для корректной работы приложение на смартфоне должно запускаться при подключении USB-UART адаптера или по умолчанию, или выбором вручную, иначе приложение не получит доступ к адаптеру.

Несколько слов хочу сказать по поводу модуля PN532 – не все эти модули «одинаково полезны»! Из трёх модулей(таких как на фото выше), приобретенных мной, один плохо читал и записывал метки, особенно ZERO и ОТР-2.0, но нормально работал в пассивном режиме со считывателями домофонов, другой вел себя с точностью до наоборот и только третий более-менее справлялся и с метками и с домофонами(правда хуже чем первые два). Возможно мне не повезло и именно эта партия модулей оказалась не лучшего качества, но жалуются на них и другие люди. Впрочем – кому как повезет. Это я к чему говорю? В продаже появились модули PN532 немного другой компоновки, которые дороже, но, по отзывам не имеют таких проблем:

Как взломать аппаратный криптокошелек | Блог Касперского

Если же кому-нибудь попадется PN532, который плохо пишет-читает метки, то могу посоветовать добавить к устройству модуль RC522, стоящий сущие копейки, но прекрасно выполняющий свои функции, по следующей схеме:

RC522____________________STM32F103C8T6

RST______________________PB12(GPIO_OUTPUT)
SCK______________________PB13(SPI2_SCK)
MISO_____________________PB14(SPI2_MISO)
MOSI_____________________PB15(SPI2_MOSI)
SDA______________________PA8(GPIO_OUTPUT)
VCC______________________ 3.3V
GND______________________GND
В этом случае PN532 будет работать только при захвате данных от считывателя, а вся тяжесть работы с метками ляжет на плечи RC522. Обратите особое внимание — RC522 необходимо подключать на напряжение только 3.3В!

P.S. Обновил ПО устройства — добавилась возможность эмуляции Mifare Classic 1K и создания базы данных меток для нескольких объектов старых домофонов IronLogic. В эмулятор можно загрузить бинарный файл дампа размером 1К, а на вкладке «База меток» можно ввести сколько надо UID-ов пустых заготовок, затем захватить для них криптоключи на различных адресах и потом уже записывать их не выходя к объекту. UID и криптоключ А 0-го сектора записанной метки сохраняется в базе данных, что позволяет при необходимости просто стереть метку, которая была записана на этом устройстве.

UPD. Очередное обновление устройства. Основное — сейчас устройство научилось производить захват и расчет криптоключей от последних версий считывателей IL, вплоть до новых 4-полосных считывателей с последней актуальной прошивкой 7.20 выложенной на сайте!
Еще раз обращаю внимание! Схема подключения модуля PN532 для новой прошивки KeyToolsSTM.bin немного изменена: теперь SIGOUT подключен на PA12 и PA15 контролера STM32, а не на PA12 и PA0, как раньше!

Вместо дорогого и капризного модуля PN532 можно сделать несложную антенну с модулем сопряжения. Схема приведена на рисунке:

Как взломать аппаратный криптокошелек | Блог Касперского

За основу взята статья Простой Mifare-сниффер. Конструкция самой антенны хорошо описана в статье, у меня же неплохо работает бескаркасная катушка диаметром 30мм из 9 витков одножильного изолированного провода, взятого от витой пары интернет кабеля. Прошивка для этой схемы требуется уже другая — KeyTools_WPN.bin. Обратите внимание — такая антенна работает только в пассивном режиме, т.е. только для захвата данных от считки и эмуляции метки. Чтобы читать-записывать метки необходимо дополнить устройство модулем RC522, схема подключения которого приведена выше.
Важное дополнение — вывод PA12 отладочной платы уже подтянут к 3.3В резистором 10кОм, именно исходя из этого выбран номинал R3 = 4к7, но на некоторых платах STM подтягивающий резистор имеет другое сопротивление! Рекомендую замерить сопротивление между РА12 и 3.3В на плате и если оно отличается от 10кОм, то перепаять резистор!

Появилась так же возможность подключения устройства к смартфонам без OTG — для этого вместо USB — UART адаптера подключается Bluetooth модуль типа HC-05, HC-06, а на смартфоне устанавливается приложения KeyToolsBT. Предварительно на Bluetooth модуле с помощью АТ команд необходимо установить скорость обмена 115200! Питание можно организовать от аккумулятора через повышающий преобразователь 5В.

Устройство обсуждается на форуме: Kazus. По всем вопросам обращайтесь туда.

Архив
GitHub

Зачем вообще нужны аппаратные криптокошельки?

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

Однако у таких способов хранения есть масса проблем. Вредоносные программы, ворующие криптокошельки, — совсем не редкость. А веб-кошельки могут не только стать жертвой взлома, но и обанкротиться, утащив за собой на дно тонны койнов.

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

Как вскрывать замки подручными средствами

Технология взлома замка обуславливается особенностью его построения и принципа работы.

Основными видами замков являются следующие:

  • штифтовый цилиндрический дверной замок:  самый распространенный, характерной чертой которого является ключ с зубцами на торце;
  • сувальдный (сейфовый) замок:  надежный, повышенной секретности;
  • финский замок (дисковые под ключ полукруглой формы):  характеризуется высоким уровнем секретности, надежностью и маловероятной возможностью взлома, благодаря отсутствию в конструкции замка пружин;
  • замок автомобиля:  чаще штифтовый, но имеет ряд особенностей взлома, по сравнению с обычными замками;
  • подвесные замки, щеколды – самые простые в своем построении и использовании механизмы.

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

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

Всегда можно найти дверь, оснащенную простым типом замка, не самого высокого качества, который вскрыть – одно удовольствие для людей такой «профессии».

Для того  чтоб открыть замок подручными средствами нужно:

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

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

  • неправильно установленные двери априори можно легко открыть, не прилагая особым усилий. Особенно если дверные полотна неплотно прилегают друг к другу, и между ними есть большой зазор. Выгните из скрепки большой крюк и проденьте в зазор, охватив внутреннюю защелку, выведите второй конец скрепки на себя. Зажмите оба конца и потяните на себя, защелка ослабеет, и дверь будет отворена;
  • замок с секретом – такие замки чаще всего устанавливаются в межкомнатных дверях, работают по принципу поворота ручки с помощью нажатия кнопки, расположенной в ее центре. С внешней стороны открыть дверь аналогичным действием невозможно. Но, тем не менее, отворить такой замок отмычками проще простого. В данном случае, выпрямите скрепку, введите в замочную скважину, подтолкните язычок, сдерживающий защелку, и поверните ручку;
  • дверь на щеколде, пожалуй, является самой доступной и ненадежной. Проденьте прямой конец скрепки между створками, так чтобы она оказалась под задвижкой, проведите вверх, пока не почувствуете отмычкой снятую защелку. Такой замок удобен тем, что задвижка может быть возвращена в исходное положение, и никто не узнает, что она кем-либо была открыта;
  • замки для чемоданов сложно назвать секретными, надежными и прочными. Его на раз можно открыть, самыми примитивными инструментами, все той же скрепкой или шпилькой. Загните конец скрепки в маленькую петлю, желательно максимально повторить форму ключа от этого замка. Вставьте конец скрепки в скважину и поворачивайте до тех пор, пока не найдете зажим и не разожмете пружину внутри механизма.

Как вы поняли, большинство замков – это всего лишь сдерживающий фактор, некое средство устрашения, но никак не 100% безопасность вашего жилища и имущества.

Как открыть встроенный кодовый замок на чемодане

Это самый бюджетный и распространенный вариант, который устанавливают практически на все модели. Такой замок состоит из защелки, 3-х или 4-х (что редко) колесиков с цифрами, прорезей для бегунков молний и кнопки для установки кода. Чемоданы с такими замками недорогие и надежность замка невелика.

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

Если код на чемодане забыт, его можно попытаться подобрать. Вначале покрутите колесики до характерных щелчков или до момента, когда они прокручиваются легче или тяжелее. Также, если зазоры у замка велики – можно увидеть детали механизма и определить комбинацию.

В противном случае остается либо полный перебор (перебор 3-хзначного кода потребует около 1,5 или 2 часов), способ из видео ниже, либо взлом замка или бегунков. На дешевых моделях, защелки которые держат бегунки, выполнены из пластмассы и их можно сломать ножом или отверткой.

Как открыть замок с кодом 4 цифры

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

Самые дешёвые модели таких замков имеют 3 или 4 вращающиеся ячейки с полями для ввода цифр. Стартовая установка предполагает код со значками «000» или «0000». Владелец, приобретая подобный замок, самостоятельно устанавливает новый числовой пароль, надеясь при этом только на собственную память.

Самыми простыми и дешёвыми считаются противоугонные устройства из разряда тех, которые крепятся к кейсам, сумкам, чемоданам. На них всего три (иногда четыре) окошка, а значит, перебрать все возможные комбинации чисел от 0 до 1000 можно менее чем за 1 час.

Для того чтобы разблокировать такой замок, необходимо:

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

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

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

Как открыть механический кодовый замок

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

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

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

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

Как открыть навесной кодовый замок

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

Для открытия навесного кодового замка понадобятся:

  • 2 молотка весом в 0,5 и 2 кг;
  • – болгарка;
  • – стетоскоп;
  • – жестяная банка;
  • – ножницы.

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

Способы открытия кодового навесного замка:

  • отлично для этой цели подойдут два молотка весом в 0,5 и 2 кг. Маленький молоток приставляете к основанию замка, используя в качестве бойка, а большим наносите сильные и резкие удары. Вместо маленького молотка подойдет и зубило. Можно воспользоваться болгаркой и просто распилить дужки. Тем не менее, часто бывают такие ситуации, когда навесной кодовый замок необходимо оставить в целости и сохранности. Тогда вам подойдут другие методы;
  • можно просто подобрать комбинацию, поочередно вертя колесики: потяните дужку замка на себя таким образом, чтобы она давила на колесики. Далее потихоньку вращайте их, начиная с самого тугого. Если услышали слабый щелчок, то переходите к следующему колесику. Далее – по алгоритму. Большинство моделей навесных кодовых замков можно легко вскрыть, воспользовавшись этим способом. Имейте в виду, что щелчок может быть еле слышен, поэтому можно воспользоваться стетоскопом;
  •  подбор комбинации цифр: он подходит только для тех замков, которые имеют 3-4 колесика, но не более. Вариантов много (более 2000), но все же стоит проявить немного усидчивости и терпения, чтобы ваши труды были не напрасны;
  • вырежьте из обычной жестяной банки небольшую пластинку: далее – закруглите ее по диаметру дужки замка. Вставьте ее до упора в технологическую щель, расположенную между корпусом навесного замка и самой дужкой. Теперь приложите немного усилий, чтобы разблокировать внутреннюю защелку. Готово!

Как открыть навесной замок на чемодане

Навешиваются на чемодан (чаще всего на бегунки молний) и не дают его открыть. Также бывают кодовыми и с ключом. Надежность замка зависит от его качества, но при этом именно чемоданы с такими замками чаще всего подвергаются воровства в аэропортах, поэтому если вы хотите купить такой замок – задумайтесь.

Принцип открытия кодового навесного замка на чемодане такой же, как и встроенного, за исключением того, что пластмассовых частей нет. Замок с ключом можно попытаться провернуть маленькой отверткой. Если ничего не получается, дужку придется перекусить мощными кусачками.

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

Если Вы забыли код от цифрового замка, то перед полным перебором можно попробовать слегка надавить на кнопку открытия и потихоньку прокручивать колесики с цифрами, пока они не застопорятся. После застопорения 1-го переходите ко 2-му, а потом и к 3-му. Замок должен открыться.

Как работают аппаратные криптокошельки?

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

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

Все эти требования привели разработчиков к оптимальному дизайну: обычно аппаратный криптокошелек выглядит как небольшой USB-брелок с дисплеем и несколькими кнопками для ввода PIN-кода и подтверждения транзакций.

Однако внутри они устроены по-разному. Два ведущих производителя аппаратных кошельков — Trezor и Ledger — используют два разных подхода к проектированию «железной» части брелоков.

Копировальщики rfid-ключей (для домофона)

Давно есть способ легально сделать копию электронного ключа для собственного домофона. Обычно это дубликат на вторую связку ключей или копия старого ключа, который боитесь сломать или потерять. В таком случае выбираем и приобретаем копировальщики электронных RFID-ключей на 125 кГц. Есть, кстати, и универсальный многочастотный копировальщик RFID, который поддерживает чатсоты 125 кГц, 250 кГц, 375 кГц, 500 кГц. В большинстве случаев достаточно приложить оригинальный ключ, считать код, затем быстро приложить пустой ключ-болванку для записи кода. Затем стоит проверить работоспособность нового ключа, и при необходимости, повторить.

Подход ledger: хранение криптографического зерна в чипе secure element

Устройства Ledger, а именно модели Ledger Nano S и Ledger Blue, оснащены двумя главными чипами. Один из них — Secure Element, специальный микроконтроллер для хранения конфиденциальных криптографических данных. Такие чипы применяются в SIM-картах, банковских картах и смартфонах с поддержкой Samsung Pay и Apple Pay.

Второй чип представляет собой микроконтроллер общего назначения, решающий периферийные задачи: управление USB-подключением, дисплеем, кнопками и так далее. Он выступает в роли посредника между чипом Secure Element и внешним миром, в том числе самим пользователем. Например, каждое подтверждение транзакции пользователем проходит через микроконтроллер общего назначения, а не через чип Secure Element.Модель организации безопасности в кошельке Ledger Nano S

Но даже хранение криптографических зерен в защищенном чипе не сделало устройство Ledger полностью неуязвимым. Взломать чип Secure Element и украсть криптографическое зерно крайне сложно, но микроконтроллер общего назначения — другое дело. Если его скомпрометировать, можно сделать так, что кошелек будет подтверждать транзакции злоумышленников.

Исследователи изучили прошивку Ledger Nano S и выяснили, что кошелек можно перепрошить скомпрометированной версией, записав определенное значение в нужный адрес памяти. Разработчики Ledger защитили этот адрес от записи. Однако оказалось, что микроконтроллер допускает изменение адресации памяти — то есть заветной ячейке памяти можно назначить другой адрес, который в список заблокированных не входит.

Исследователи воспользовались этой аппаратной особенностью и загрузили в Nano S модифицированную прошивку. В демонстрационных целях эта модификация содержала игру «Змейка» — но вместо нее мог бы быть, например, вредоносный модуль, подменяющий адрес кошелька во всех исходящих транзакциях.

Другой способ компрометации аппаратного кошелька основан на аппаратных имплантах. Джош Датко смог подключить к Ledger Nano S недорогой имплант, который нажимает кнопку подтверждения при получении вредоносной команды по радио. Судя по всему, таким способом можно скомпрометировать любой аппаратный кошелек — исследователь выбрал в качестве жертвы своего эксперимента Ledger Nano S просто потому, что это самый компактный из криптокошельков, поэтому встроить имплант в него было сложнее всего.

Другое устройство того же производителя, Ledger Blue, оказалось уязвимым к атакам по сторонним каналам. Ledger Blue — это аппаратный кошелек с большим тачскрином и емкой батареей. Выяснилось, что из-за неудачного дизайна печатной платы она излучает вполне различимые радиосигналы, когда пользователь вводит PIN-код. Исследователи записали эти сигналы и натравили на них алгоритм машинного обучения, который научился распознавать их с точностью 90%.Взлом IoT-устройства на базе блокчейна с помощью искусственного интеллекта в облаке

Подход trezor: хранение криптографического зерна во флеш-памяти микроконтроллера общего назначения

Кошельки Trezor устроены немного иначе. В них нет чипов Secure Element, и всеми процессами в устройстве управляет один-единственный чип — микроконтроллер общего назначения на базе архитектуры ARM. Этот чип отвечает как за хранение и обработку криптографических данных, так и за управление USB-подключением, дисплеем, кнопками и всем остальным.

Теоретически такая конструкция должна упростить взлом прошивки устройства для доступа к криптографическому зерну, спрятанному во флеш-памяти микроконтроллера. Но, как убедились эксперты, инженеры Trezor хорошо поработали над безопасностью прошивки, поэтому им пришлось направить свои усилия на взлом аппаратной части — и они в этом преуспели.Модель организации безопасности в кошельке Trezor One

Исследователи использовали методику под названием voltage glitching — она заключается в том, что на микроконтроллер подается пониженное напряжение, чтобы спровоцировать сбои в его работе. С помощью этого метода они переключили состояние чипа Trezor One с «доступ отсутствует» на «частичный доступ». После этого они смогли считывать оперативную память чипа, но содержимое флеш-накопителя оставалось недоступным для чтения.

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

Радиологические методы взлома кода на замке

Современные сейфовые замки сделаны из легких материалов, например нейлона, исключающего применение этого метода, так как большинство внешних частей сейфа сделано из намного более плотных материалов.

Для определения кода, открывающего замок, используется проникающее излучение, например рентгеновские лучи, позволяющие определить внутреннюю угловую зависимость механизма замка.

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

Сверление для взлома цифр кода на замке

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

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

Читайте также:  Исправление SEC_ERROR_BAD_SIGNATURE в Firefox - Учебные пособия по Windows

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

Хакеры анализируют информацию из прошлого, пользуясь интернет-архивами

(известный ещё как «Wayback Machine») хранит периодически создаваемые снимки веб-сайтов. Этот проект позволяет увидеть то, каким был интернет многие годы тому назад. Данные архива представляют немалый интерес для хакеров, которым нужно собрать сведения о некоем проекте. Сканировать файлы старых вариантов веб-сайтов можно с помощью инструментов наподобие

(он основан на

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

Вот что нужно сделать в том случае, если вы нашли ключ там, где его быть не должно:

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

Хакеры используют google

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

"MySQL_ROOT_PASSWORD:" "docker-compose" ext:yml

Эта строка рассчитана на поиск файлов с расширением

yml

, причём, это должны быть файлы

docker-compose

, в которых разработчики нередко хранят пароли. Не особенно уникальные пароли. Попробуйте запустить в Google поиск по этой строке. Вас удивит то, что вы найдёте.

Другие интересные поисковые строки могут быть рассчитаны на поиск RSA-ключей или учётных данных AWS. Вот ещё один пример:

"-----BEGIN RSA PRIVATE KEY-----" ext:key

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

, если хотите поэкспериментировать, большой список Google-дорков.

Хакеры находят секретные данные в javascript-файлах

Ключи к API разбросаны по всему интернету. Воспользоваться ими может кто угодно. Это — факт. Часто у того, что ключи оказываются в общем доступе, нет каких-то особых причин. Разработчики просто повсюду их забывают. Например, ключи попадают в код по следующим причинам:

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


Блоки кода, напоминающие следующий, можно встретить в интернете довольно часто:

// DEBUG ONLY
// TODO: remove -->
API_KEY=t0psecr3tkey00237948

Хотя многие хакеры самостоятельно читают код JavaScript-файлов, такие файлы, в основном, ищут с помощью инструментов вроде

, а потом проверяют то, что нашли, на наличие там соответствующих паттернов.

Как они это делают? После использования сканера вроде meg они ищут в найденных файлах строки, соответствующие различным шаблонам. Тот же, кто создал meg, написал ещё одну отличную программу, именно для этого и предназначенную.

Она называется gf и представляет собой улучшенный вариант grep. В данном случае использование при запуске gf опции truffleHog или, в другом варианте её написания, trufflehog, позволяет инструменту находить высокоэнтропийные строки, представляющие собой ключи к API.

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

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

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

Хакеры пользуются github

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

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

Список сотрудников организации можно создать, воспользовавшись методами разведки, основанной на открытых источниках (Open source intelligence, OSINT). Помочь в этом злоумышленнику может LinkedIn или общедоступный список сотрудников компании с GitHub.

Если, например, кто-то решил взломать компанию Tesla, то он вполне может начать изучение компании с этой страницы:

Хакеры тщательно изучают интересующие их системы

Когда некая система очень интересует исследователя безопасности (или мотивированного хакера), он приступает к глубокому изучению этой системы. Он близко знакомится с ней. Его интересуют конечные точки API, соглашения по именованию сущностей, особенности взаимодействия внутренних частей систем, наличие доступа к разным версиям системы в том случае, если одновременно используются её разные версии.

Не очень хороший подход к защите API заключается в том, чтобы усложнять пути доступа к ним, скрывать их с использованием чего-то вроде генератора случайных символов. Это не заменяет реальных механизмов обеспечения безопасности. Исследователи безопасности пытаются найти незащищённые пути доступа к системам, конечные точки API, например, пользуясь инструментами для «нечёткого» поиска уязвимостей.

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

Помните о том, что «безопасность через неясность» («security through obscurity») — это не лучший способ защиты систем (хотя полностью игнорировать его не стоит).

Электронные кодовые замки: как открыть

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

Электронный замок не имеет замочной скважины –«слабого места» обычных замков. Хакеры, вскрывающие кодовые электронные замки с помощью компьютера – сказки, даже если привести в негодность клавиатуру и выломать ее, открытию замка это никак не поспособствует.

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

Самое надежное средство для предотвращения взлома кодового замка — держать в секрете код для его открытия. Что знает один – знает один, что знают два — знают двадцать два.

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

Заключение

Нужно понимать, что большинство описанных методик взлома, которые нашли Томас Рот, Джош Датко и Дмитрий Недоспасов, сложны и подразумевают физический доступ к устройству. Так что не спешите выбрасывать свой кошелек Ledger или Trezor. Если злоумышленникам не удастся наложить на него руки, ваши биткойны никак не пострадают (разве что обесценятся).

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

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

Впрочем, в отличие от некоторых других аппаратных кошельков, устройства Ledger и Trezor действительно проектируются с акцентом на безопасности. Просто не заблуждайтесь, думая, что их никак нельзя взломать. Лучше предпринять дополнительные меры по защите своего криптосостояния:

Дополнительные рекомендации в отношении кошельков Trezor:

Полную версию выступления исследователей вы можете посмотреть по приведенной ниже ссылке. Это весьма интересное и познавательное видео для владельцев аппаратных кошельков.

Итоги

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

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

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

Если говорить о защите информации, то тут не очень хорошо работает идея, в соответствии с которой скорость — это самое главное.

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

Защита систем иногда может восприниматься как дело не особо важное, но трудозатратное и беспокойное. Но будьте уверены: предпринятые вами простые действия по защите ваших систем способны избавить вас от огромных неприятностей.

Как вы защищаете свои системы?

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *

Adblock
detector