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

Немного о Flipper Zero

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

Flipper Zero
Flipper Zero

Flipper Zero способен работать с такими технологиями, как:

  • RFID 125 kHz

  • NFC

  • ИК-передатчик

  • Sub-GHZ

  • GPIO для управления внешними устройствами и платами

Историческая справка по NFC

Технология NFC (Near Field Communication), берет свое начало от другой технологии, называемой RFID (Radio Frequency Identification). Эта технология появилась в середине 20-го века. Технология RFID была разработана для идентификации объектов с помощью радиосигналов и широко используется в таких сферах, как логистика, управление запасами и идентификация товаров.

1. Рождение технологии: от RFID к NFC

  • 1970-е:

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

  • 2002:

    • Sony и Philips разработали концепцию NFC как усовершенствованной версии RFID для взаимодействия на малых расстояниях.

2. Официальное появление NFC

  • 2004:

    • Был создан NFC Forum, организация, ответственная за стандартизацию и популяризацию технологии.

    • Nokia стояла во главе ассоциации NFC Forum, созданной для продвижения использования NFC в мобильных устройствах и бытовой электронике

  • 2006:

    • Был представлен первый телефон с поддержкой NFC, Nokia 6131. Это стало первым шагом к массовой популяризации технологии.

3. Интеграция с мобильными устройствами

  • 2010:

    • Смартфон Samsung Nexus S стал первым Android-устройством с поддержкой NFC, которое позволило осуществлять бесконтактные платежи и обмен информацией.

  • 2011:

    • Google Wallet стал первым крупномасштабным сервисом бесконтактных мобильных платежей.

  • 2012:

    • "Смарт—метки" Sony SmartTags с поддержкой NFC - для автоматического переключения настроек телефона Sony Xperia S.

4. Расширение возможностей бесконтактной оплаты

  • 2014:

    • Apple внедрила NFC в свои гаджеты, в первую очередь в iPhone 6, он был выпущен с сервисом Apple Pay и мгновенно сделал эту технологию популярной среди пользователей iOS.

    • Появились Samsung Pay и другие крупные решения, которые сделали бесконтактную оплату удобной и безопасной.

5. NFC в повседневной жизни и IoT

  • 2020:

    • NFC широко используется в устройствах IoT, таких как интеллектуальные замки, системы доступа, фитнес-трекинг и носимые устройства.

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

Принцип работы NFC

Технология NFC основана на магнитном поле, создаваемом одной из антенн. Этот вид связи возникает, когда два устройства или устройство и метка находятся в непосредственной близости друг от друга.

Визуализация взаимодействия
Визуализация взаимодействия
  1. Активное и пассивное устройства

    • Активное устройство - смартфон или терминал - может создавать магнитное поле и управлять процессом обмена данными.

    • Пассивное устройство - это NFC - метка, которая использует энергию магнитного поля, создаваемого активным устройством, для функционирования и отправки данных.

  2. Режимы работы NFC Существует три основных способа взаимодействия с NFC:

    • Режим чтения/записи Активное устройство считывает данные с метки, или же информация записывается в метку самим устройством.

    • Режим эмуляции карты Устройство NFC может имитировать поведение карты, такой как банковская карта или карта-пропуск, для взаимодействия с терминалом.

    • Режим P2P (peer-to-peer) Два активных устройства обмениваются данными друг с другом (например, для передачи файлов или быстрого обмена контактами).

Этапы взаимодействия устройств с NFC

  1. Инициализация соединения

    • Когда два устройства NFC сближаются, одно из них создает магнитное поле, а другое "улавливает" его.

    • Устройства определяют, какой режим взаимодействия будет использоваться.

  2. Передача данных

    • Обмен данными осуществляется по протоколам ISO/IEC 14443 и 18092.

    • Данные передаются побитово с использованием технологии радиочастотной модуляции (ASK).

  3. Завершение сеанса

    • После завершения обмена устройства отсоединяются, и устройство перестает создавать какое-либо магнитное поле.

      Формат стека протоколов NFC
      Формат стека протоколов NFC

Принцип работы карты MIFARE Classic 1k и считывателя

На данный момент под рукой у меня только карта и считыватель для MIFARE Classic 1K, в данном примере рассмотрим именно её.

MIFARE Classic 1K - одна из самых популярных NFC - карт, работающих на частоте 13,56 МГц в соответствии со стандартом ISO/IEC 14443-A. Ниже приводится описание структуры карты, и основных этапов взаимодействия карты со считывающим устройством.

Структура карты MIFARE Classic 1K

Физическая структура:

  • Микросхема: микроконтроллер со встроенным блоком памяти, модулем шифрования и коммуникационным интерфейсом.

  • Антенная катушка: индуктивная катушка, которая может служить для подачи энергии и передачи данных с помощью магнитного поля.

Логическая структура памяти:

Структура памяти
Структура памяти
  • 16 секторов, состоящих из 4 блоков по 16 байт каждый;

  • Последний блок каждого сектора является ключевым блоком, который включает в себя два ключа (A и B) и биты доступа (Access bits).

Взаимодействие считывателя с картой

  1. Модуляция данных:
    Считыватель → Карта:

    • Выполняется передача данных с помощью модуляции Модуляция с уменьшением несущей (OOK, On-Off Keying); сигнал переключается между присутствием и отсутствием несущей. Карта → Считывающее устройство:

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

  2. Кодирование данных: Данные, передаваемые между картой и считывающим устройством, кодируются в Manchester:

    • "1" кодируется как переход с низкого уровня на высокий.

    • "0" кодируется как переход с высокого уровня на низкий.

      Визуализация кодировки
      Визуализация кодировки
  3. Алгоритм CRYPTO-1:

    • Использует 48-битные ключи для шифрования.

    • Карта и считывающее устройство обмениваются случайными числами (nonce) для установления уникальных сеансов.

    • CRYPTO-1 был разработан для защиты, но его уязвимые места — малый размер ключа и предсказуемость генерации nonce — именно это и сделало карты уязвимыми. (на момент создания размер ключа считался достаточным, однако на данный момент взломать такие ключи довольно простая задача.)

      Алгоритм CRYPTO-1
      Алгоритм CRYPTO-1

      Ход взаимодействия

  4. Инициализация и обнаружение карты

    • Считыватель генерирует магнитное поле с помощью антенны.

    • Когда карта оказывается в зоне действия поля, в ее катушке возникает индуцированный ток, который приводит в действие микроконтроллер.

    • Карта отправляет ответ - запрос с определенным идентификатором UID в ответ на команду Request-A или REQA, поступающую от считывателя.

  5. Защита от коллизий и выбор карты

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

    • В случае успешного выбора считывающее устройство отправляет команду SELECT, в то время как карта подтверждает свой выбор.

  6. Аутентификация

    • Карта и считывающее устройство используют криптографический алгоритм CRYPTO-1 для взаимной проверки друг друга.

    • Считывающее устройство шифрует "случайный запрос" и отправляет его на карту.

    • Карта выдает "ответ".

    • Считыватель сравнивает его с ожидаемым результатом.

    • Если проверка прошла успешно, открывается доступ к данным в секторе.

  7. Обмен данными После успешной аутентификации считыватель может:

    • считывать данные из блоков сектора;

    • изменять данные, если это разрешение задано в ключевом блоке.

    • Передача данных осуществляется по схеме амплитудной модуляции (ASK) в соответствии с протоколом, соответствующим стандарту ISO/IEC 14443-A.

      Блок схема активацим карты для доступ к блокам памяти
      Блок схема активацим карты для доступ к блокам памяти

Теперь, когда мы в курсе того, как работает технология NFC, можно приступить к практике эксплуатации уязвимостей этого протокола, но для начала следует разобраться, как Flipper Zero может “притвориться” картой.

  1. Считывание данных карты:

    • Используя Flipper Zero, производится полное клонирование карты.

    • Для этого необходим доступ к ключам аутентификации (например, KEY A и KEY B) для каждого сектора карты. Flipper Zero может использовать брутфорс или дамп ключей из считывателя.

  2. Создание дампа:

    • Flipper Zero сохраняет данные карты (UID, данные секторов и блоков) в виде файла дампа.

  3. Эмуляция карты:

    • В режиме "Card Emulation" Flipper Zero загружает сохранённый дамп карты и "притворяется" оригинальной картой.

В следующей части статьи мы перейдем от теории к практике и разберем основные функции Flipper Zero для работы с NFC, продолжение следует……

Комментарии (5)


  1. Newcss
    26.01.2025 11:39

    Сообщество интузиастов давно сидит на ProxMark3 ))). Зачем изобретать велосипед?


    1. sunatchi Автор
      26.01.2025 11:39

      ProxMark3 более узко направленное устройство для работы с RFID/NFC, в то время как Flipper более универсальный, и отлично подходит для начального уровня


  1. QtRoS
    26.01.2025 11:39

    От теории к практике: как раскрыть потенциал NFC с помощью Flipper Zero

    В статье только теория, да и та по стилю похожа на нейроподелку... Продолжение в таком же стиле ожидать или действительно есть интересный опыт использования Флиппера?


    1. sunatchi Автор
      26.01.2025 11:39

      да, действительно эта часть больше теоретическая, ее цель дать базу для тех, кто хотел бы подробнее разобраться как это работает

      практический опыт использования будет в следущей части статьи


  1. H2oker
    26.01.2025 11:39

    Ставьте прошивку unleashed и используйте все возможности Флиппера без ограничений. Вначале считывается карточка, потом отсутствующие ключи добываются из устройства, когда флип прикидывается карточкой и добывает Хэши. Как только добыты Хэши, они отправляются на телефон и происходит их взлом, довольно быстро, потому что шифрование там никакое и протокол скомпрометированный. После этого получается рабочая нфц "карточка" и можно отельную карту оставлять в номере, если нежелательно отключение электричества при покидании номера, а дверь открывать флипером. Ну а так как секретная часть видимо не меняется в большинстве случаев, то ничто не мешает потом быстро сосканить карточку горничной у которой есть доступ ко всем номерам. Убедившись пару раз насколько всё это просто, я заработал себе небольшую паранойю и теперь на ночь подпираю в гостиницах стулом входную дверь. :)))