Good Carder
Professional
- Messages
- 930
- Reaction score
- 523
- Points
- 93
Хватит прятать YubiKey в ящик стола. Надоело тратить сотни долларов на железки, которые всё равно теряются? Пришло время собрать собственный эмулятор аппаратного токена.
Сегодня я расскажу, как собрать свой FIDO2-токен на коленке. Это не просто копия, а софт-эмулятор, который способен заменить YubiKey, пройти аттестацию и даже эмулировать уникальные сертификаты. Всё, что вам понадобится — микроконтроллер RP2350 за $5, открытая прошивка и немного свободного времени. Окунёмся в мир, где аппаратная безопасность становится не мифом, а технологичной игрой.
Прежде чем взламывать, нужно понять, как работает защита. Система FIDO2 — это не магия, а несколько слоёв защиты, каждый из которых можно обойти:
Важно, что все эти слои неразрывно связаны: эмуляция CTAP позволяет взаимодействовать с системой на уровне протокола, а подмена аттестации — обходить проверку на стороне сервера. Подделка документа, удостоверяющего личность, и перехват самого процесса общения — два ключевых элемента для создания невидимого токена.
Промышленные токены — это дорого и закрыто. Мы пойдём другим путём. Проект pico-fido от разработчика polhenarejos — это ваш билет в мир DIY-токенов. Он превращает дешёвый микроконтроллер Raspberry Pi Pico (RP2040/RP2350) или ESP32 в полноценный FIDO2-аутентификатор. Вот какие задачи решает эта прошивка:
Итак, вооружение у нас есть. Пришло время научиться его настраивать и использовать.
Подойдёт любая плата с поддержкой UF2-загрузки. Для начала я рекомендую взять обычный Raspberry Pi Pico — это самый простой способ освоиться.
Простая прошивка — это только начало. Настоящее искусство — заставить ваш эмулятор выглядеть как аутентичный YubiKey.
Чтобы решить эту проблему, необходимо заменить в прошивке самоподписанный сертификат на копию сертификата реального YubiKey. Этот процесс включает в себя несколько шагов:
После этой процедуры сервер при проверке будет считать ваш эмулятор легитимным устройством конкретного производителя. Однако здесь есть важный нюанс: если сервер использует расширенную проверку и требует соответствия приватного ключа сертификату, простая подмена документа не сработает. В таком случае потребуется более глубокая модификация прошивки для генерации собственной пары ключей, подписанной доверенным центром.
Предупреждение: Эта техника работает только на старых прошивках или устройствах с отключённой проверкой целостности. Обсуждение методов обхода этой защиты выходит за рамки данной статьи и представляет собой отдельную сложную задачу.
Понимание механизмов защиты необходимо не только для обхода, но и для её создания. Чтобы обнаружить эмулятор или подделку, системы используют несколько методов:
Промышленные аппаратные токены перестали быть экзотикой. Сегодня вы можете взять микроконтроллер за $5–7 и запросто собрать свой собственный FIDO2-токен, который ни в чём не уступает дорогим YubiKey. Используйте эмуляторы для пентеста и разведки, защищайте свои и тестовые счета. Это мощный инструмент для исследования сетей и систем безопасности. Помните, что настоящая защита — это не слепая вера в «неприступную» аппаратную технологию, а понимание её слабых мест.
Быстрая памятка на одну строку:
«CTAP = протокол общения, Attestation = паспорт токена. pico-fido — открытая прошивка для Pico, превращающая микроконтроллер в FIDO2. PIN — через YKMAN, OTP — через эмуляцию клавиатуры. Самоподписанный сертификат для своей игрушки; подделка сертификата YubiKey — для иллюзии легитимности. Ставьте Secure Boot, чтобы ключи не украли, если вытащат чип»
Сегодня я расскажу, как собрать свой FIDO2-токен на коленке. Это не просто копия, а софт-эмулятор, который способен заменить YubiKey, пройти аттестацию и даже эмулировать уникальные сертификаты. Всё, что вам понадобится — микроконтроллер RP2350 за $5, открытая прошивка и немного свободного времени. Окунёмся в мир, где аппаратная безопасность становится не мифом, а технологичной игрой.
Часть 1. Разбор полётов: Архитектура FIDO2. Что защищает ваш YubiKey
Прежде чем взламывать, нужно понять, как работает защита. Система FIDO2 — это не магия, а несколько слоёв защиты, каждый из которых можно обойти:- WebAuthn (Web Authentication API). Это интерфейс для браузеров и приложений. Он формирует криптографический вызов (challenge) и отправляет его вашему токену для подписи. Вся логика аутентификации находится на этом уровне.
- CTAP (Client to Authenticator Protocol). Это «язык», на котором операционная система и браузер общаются с вашим железным ключом. Протокол работает через USB HID, NFC или Bluetooth, а для внешних токенов это единственный способ связи. Если вы сумеете эмулировать этот протокол, то ваше устройство будет выглядеть для системы как настоящий токен.
- Аттестация (Attestation). Это «паспорт» вашего устройства. В момент создания ключей токен предъявляет сертификат, подписанный закрытым ключом производителя. Сервер проверяет этот паспорт и, если всё в порядке, доверяет вашему токену. Если вы сможете подменить этот сертификат, то сервер будет думать, что ваш эмулятор — это легитимный YubiKey.
Важно, что все эти слои неразрывно связаны: эмуляция CTAP позволяет взаимодействовать с системой на уровне протокола, а подмена аттестации — обходить проверку на стороне сервера. Подделка документа, удостоверяющего личность, и перехват самого процесса общения — два ключевых элемента для создания невидимого токена.
Часть 2. Оружие пролетариата: Открытая прошивка pico-fido
Промышленные токены — это дорого и закрыто. Мы пойдём другим путём. Проект pico-fido от разработчика polhenarejos — это ваш билет в мир DIY-токенов. Он превращает дешёвый микроконтроллер Raspberry Pi Pico (RP2040/RP2350) или ESP32 в полноценный FIDO2-аутентификатор. Вот какие задачи решает эта прошивка:- Полный стек CTAP. Прошивка поддерживает CTAP 2.1 и CTAP 1, что позволяет вашему эмулятору работать с любыми современными сервисами (Google, Microsoft, GitHub и др.).
- Расширенный функционал. Вы получаете поддержку WebAuthn, U2F, OATH (TOTP/HOTP), хранение криптоключей в защищённом хранилище и даже эмуляцию клавиатуры для ввода OTP. Этот набор функций делает Pico не уступающим по возможностям даже коммерческим аналогам.
- Безопасность на уровне железа. На новых чипах (RP2350, ESP32-S3) можно включить аппаратную защиту (Secure Boot), которая шифрует мастер-ключ в энергонезависимой памяти и не даст считать ваши приватные ключи, даже если устройство будет изъято.
Итак, вооружение у нас есть. Пришло время научиться его настраивать и использовать.
Часть 3. Пошаговая инструкция по сборке вашего эмулятора
Шаг 1. Выбор оборудования (Стартовый капитал $5)
Для сборки вам понадобится самое доступное «железо»:- Raspberry Pi Pico (RP2040). Самый дешёвый вариант (около $4). Но имейте в виду, что в этой модели нет аппаратной защиты, и ключи можно извлечь из памяти через специальный программатор, что при определённых условиях сделает токен уязвимым.
- Raspberry Pi Pico 2 (RP2350). Лучший вариант по соотношению цена/качество (около $5–6). Обладает встроенной защитой и позволяет включить аппаратное шифрование ключей, что делает его гораздо безопаснее.
- ESP32-S3. Более мощный и сложный в прошивке чип, но тоже поддерживает аппаратную защиту.
Подойдёт любая плата с поддержкой UF2-загрузки. Для начала я рекомендую взять обычный Raspberry Pi Pico — это самый простой способ освоиться.
Шаг 2. Прошивка (5 минут)
- Зажмите кнопку BOOTSEL на Pico и подключите его к компьютеру по USB.
- В проводнике откроется съёмный диск RPI-RP2.
- Скачайте последнюю прошивку pico-fido.uf2 из раздела Releases на GitHub. Для RP2040 выбирайте файлы с суффиксом rp2040.
- Скопируйте файл .uf2 на диск RPI-RP2. Плата автоматически перезагрузится и превратится в FIDO2-токен.
- Настройте PIN-код через утилиту YKMAN (Yubico Key Manager). Это обязательный шаг для активации всех функций.
Шаг 3. Настройка и первые шаги
После прошивки ваш Pico должен определиться в системе как USB-токен. Вы можете использовать его для регистрации в сервисах вроде GitHub или Google. Прошивка также поддерживает расширенные функции, такие как управление учётными данными и даже настройку светодиода для индикации статуса.
Часть 4. Продвинутые техники эмуляции
Простая прошивка — это только начало. Настоящее искусство — заставить ваш эмулятор выглядеть как аутентичный YubiKey.4.1. Клонирование Attestation Certificate. Как притвориться легитимным
Самый главный секрет успешной эмуляции — это аттестационный сертификат. По умолчанию pico-fido использует свой собственный, самоподписанный сертификат. Это хорошая защита для обычного пользователя, но для наших целей требуется пройти проверку "легитимности устройства".Чтобы решить эту проблему, необходимо заменить в прошивке самоподписанный сертификат на копию сертификата реального YubiKey. Этот процесс включает в себя несколько шагов:
- Извлечение сертификата с реального YubiKey. Используя инструменты вроде YKMAN или libfido2, вы можете подключить свой настоящий YubiKey и экспортировать его сертификат PIV-слота 9c, который используется для аутентификации.
- Конвертация сертификата. Полученный сертификат необходимо преобразовать в формат, понятный прошивке pico-fido. Для этого вам понадобятся утилиты OpenSSL и скрипты для генерации массива байтов, которые встраиваются в код прошивки.
- Перепрошивка. Внедрив поддельный сертификат, вы заново компилируете прошивку (или генерируете кастомный образ) и загружаете его на Pico.
После этой процедуры сервер при проверке будет считать ваш эмулятор легитимным устройством конкретного производителя. Однако здесь есть важный нюанс: если сервер использует расширенную проверку и требует соответствия приватного ключа сертификату, простая подмена документа не сработает. В таком случае потребуется более глубокая модификация прошивки для генерации собственной пары ключей, подписанной доверенным центром.
Предупреждение: Эта техника работает только на старых прошивках или устройствах с отключённой проверкой целостности. Обсуждение методов обхода этой защиты выходит за рамки данной статьи и представляет собой отдельную сложную задачу.
4.2. Атаки на CTAP: Перехват и подмена на лету
Самая мощная и гибкая техника — написать собственный эмулятор CTAP. Вместо того чтобы использовать готовую прошивку, вы пишете программу на Python (или любом другом языке), которая реализует протокол CTAP поверх HIDRAW. Это позволяет перехватывать, модифицировать и подменять данные на лету. Для этого можно использовать специализированные библиотеки, такие как python-fido2, которые предназначены для общения с FIDO-устройствами и проверки их подписей. Такой подход даёт вам полный контроль над процессом и возможность эмулировать поведение любого токена, включая подмену его ответов для обхода проверок. Это уже уровень хакерской техники, требующий глубоких знаний.
Часть 5. Защита от эмуляции (Blue Team)
Понимание механизмов защиты необходимо не только для обхода, но и для её создания. Чтобы обнаружить эмулятор или подделку, системы используют несколько методов:- Анализ сертификата и трафика. Сервер проверяет не только сам сертификат, но и корректность ответов токена. Любые аномалии в структуре или времени ответа могут выдать эмулятор.
- Анализ данных взаимодействия. Изучение CTAP-трафика на предмет несоответствий и специфических паттернов, характерных для эмуляции, может помочь в обнаружении.
- Проверка криптостойкости. Запрос на подпись с использованием нестандартных параметров может раскрыть, что устройство не является настоящим железным токеном с защищённым хранилищем.
- Защита от downgrade-атак. Система не должна позволять использовать устаревшие или менее безопасные методы аутентификации.
Резюме
Промышленные аппаратные токены перестали быть экзотикой. Сегодня вы можете взять микроконтроллер за $5–7 и запросто собрать свой собственный FIDO2-токен, который ни в чём не уступает дорогим YubiKey. Используйте эмуляторы для пентеста и разведки, защищайте свои и тестовые счета. Это мощный инструмент для исследования сетей и систем безопасности. Помните, что настоящая защита — это не слепая вера в «неприступную» аппаратную технологию, а понимание её слабых мест.Быстрая памятка на одну строку:
«CTAP = протокол общения, Attestation = паспорт токена. pico-fido — открытая прошивка для Pico, превращающая микроконтроллер в FIDO2. PIN — через YKMAN, OTP — через эмуляцию клавиатуры. Самоподписанный сертификат для своей игрушки; подделка сертификата YubiKey — для иллюзии легитимности. Ставьте Secure Boot, чтобы ключи не украли, если вытащат чип»