Взламываем домофонные ключи Mifare classic (+ Удалось скопировать)

Взламываем домофонные ключи Mifare classic (+ Удалось скопировать)

В одном из своих обзоров (Atmega8A в корпусе TQFP-32 прошивка через Arduino ISP), я уже упоминал о сборке считывателя/эмулятора для контактных домофонных ключей по проекту clusterr'а.

Устройство получилось хорошим, и решив, не останавливаться на достигнутом, принялся изучать теорию по работе с бесконтактными ключами (далее RFID). В частности интересовала возможность, создание копии ключа или полной копии, так называемого magic key (копируется не только содержание, но и ID-устройства), просмотрев информация в интернете решил заказать данный набор.

Доставка и внешний вид

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

Состав лота: — МодульPN532 NFC Чтение/Запись (3.3V-5V); — S50 Белая карта; — S50 Ключ карта.

Характеристики

На плате установлен чип NXP Pn532, который позволяет производить операции чтения и записи для Mifare Classic Card (13.56 МГц).

— Размер: 10.5см X 4.9см; — Питание: 3.3V-5.0V; — Интерфейсы: I2C, SPI, HSU(3.3V-5V совместимость); — Кнопка Reset на плате; — Шаг между пинами: 2.54 мм.

Подключение

Для подключения к компьютеру, лучше всего использовать HSU — High-speed UARTs и USB TTL основанный на чипе FT232RL, так же есть возможность подключения Pn532 NFC Module по SPI с Arduino и использовать последнюю, как USB TTL, более подробно можно прочитать по проекту mfocuino. К сожалению, у меня возникли проблемы с Cp2102, который я уже неоднократно упоминал в своих обзорах.

— Pn532 NFC Module TX -> FTDI TTL RX — Pn532 NFC Module RX -> FTDI TTL TX — Pn532 NFC Module VIN -> FTDI TTL VCC — Pn532 NFC Module GND -> FTDI TTL GND

Установка и настройка программной части

Для работы с Mifare Classic существует свободная библиотека libnfc, которая содержит необходимый набор утилит для RFID. Установка поддерживается на множество популярных ОС, но я рекомендую использовать GNU\Linux и в частности Debian\Ubuntu.

Установка libnfc

Открываем Terminal, получаем права привилегированного пользователя (root) и устанавливаем необходимые пакеты.

Для удобства создадим папку nfc в домашней директории и перейдем в неё:

Получаем текущую версию из git-репозитория:

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

Установка mfoc

MFOC — это открытая реализация «offline nested» атаки от Nethemba.

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

Получаем текущую версию из git-репозитория:

cd ./mfoc autoreconf -vis ./configure sudo make

Установка mfcuk

MFCUK — это открытая реализация Darkside Attack. Данная утилита не требует знаний какого-либо из ключей.

Получаем текущую версию из git-репозитория:

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

Подключаем Pn532 NFC Module к USB TTL, а его в свою очередь к порту компьютера и прикладываем RFID ключ — пустой, который шел в комплекте.

В ответ получаем:

Пробуем получить dump карты через утилиту mfoc.

Получаем дамп карты в файл dump.mfd Ключи Key A: ffffffffffff Found Key B: ffffffffffff

Убираем пустой RFID и прикладываем домофонный, выполняем команду:

Не получилось со стандартными ключами No sector encrypted with the default key has been found, exiting…

Если нам известен один из ключей, то можно воспользоваться параметром -k key

Попробуем осуществить взлом через mfcuk. Переходим в директорию

Неудача ERROR: mfcuk_key_recovery_block() (error code=0x03) ERROR: mfcuk_key_recovery_block() (error code=0x03) ERROR: mfcuk_key_recovery_block() (error code=0x03)

Оставлял на сутки, ошибка циклически повторяется, при этом если запустить с ключём -v 3 процесс идет.

Ответ в интернете, я так и не нашел, перепробовал разные версии libnfc и mfcuk, оставлял вопросы разработчикам и пытался использовать специализированные дистрибутивы, типа kali linux, пытался взломать пустую карту, та же самая ошибка, результат одинаковый.

В одной из статей упоминается о успешном взломе с ACR122U reader libnfc-1.5.1 и mfcuk r65, но у меня сейчас нет такого устройства.

Решение проблемы

Как оказалось, существуют 'weaker' ключи, а в mfcuk не существует логики по данному типу. Огромное спасибо пользователю Stewart8 и его сообщению, где он описал проблему и пути её решения.

Для удобства я выкладываю отредактированные файлы crapto1.c и mfcuk.c, которые необходимо подменить в папке mfcuk/src и собрать утилиту заново.

И ждем пока maxhii=00ffffff и maxloi=00ffffff начнут повторяться:

mfcuk — 0.3.8 Mifare Classic DarkSide Key Recovery Tool — 0.3 by Andrei Costin, zveriu@gmail.com, andreicostin.com

INFO: Connected to NFC reader: pn532_uart:/dev/ttyUSB0 VERIFY: Key A sectors: 0 1 2 3 4 5 6 7 8 9 a b c d e f Key B sectors: 0 1 2 3 4 5 6 7 8 9 a b c d e f

RECOVER: 0 … 254592 candidates found, nonce 78882a2f maxhi=3 maxhii=0030b0c5 maxlo=3 maxloi=00080e51 mfcuk: ERROR: mfcuk_key_recovery_block() (error code=0x03) 44928 candidates found, nonce 5578882a maxhi=3 maxhii=000bee31 maxlo=3 maxloi=00080e51 mfcuk: ERROR: mfcuk_key_recovery_block() (error code=0x03) 354816 candidates found, nonce 5578882a maxhi=4 maxhii=00895568 maxlo=3 maxloi=0000a513 mfcuk: ERROR: mfcuk_key_recovery_block() (error code=0x03) 153600 candidates found, nonce 688df49b maxhi=4 maxhii=0030028f maxlo=4 maxloi=0016ef51 mfcuk: ERROR: mfcuk_key_recovery_block() (error code=0x03) 49152 candidates found, nonce a2701b19 maxhi=4 maxhii=0030028f maxlo=4 maxloi=0016ef51 mfcuk: ERROR: mfcuk_key_recovery_block() (error code=0x03) 59136 candidates found, nonce 02aa92c0 maxhi=5 maxhii=00ffffff maxlo=5 maxloi=00ffffff mfcuk: ERROR: mfcuk_key_recovery_block() (error code=0x03) 206080 candidates found, nonce 32a03931 maxhi=6 maxhii=00ffffff maxlo=6 maxloi=00ffffff mfcuk: ERROR: mfcuk_key_recovery_block() (error code=0x03) 40256 candidates found, nonce 78882a2f maxhi=7 maxhii=00ffffff maxlo=7 maxloi=00ffffff mfcuk: ERROR: mfcuk_key_recovery_block() (error code=0x03) 349440 candidates found, nonce a2701b19 maxhi=8 maxhii=00ffffff maxlo=8 maxloi=00ffffff mfcuk: ERROR: mfcuk_key_recovery_block() (error code=0x03) 1344 candidates found, nonce 688df49b maxhi=9 maxhii=00ffffff maxlo=9 maxloi=00ffffff

Обычно maxhi, maxlo не превышают в этот момент 5-6. На ошибки error code=0x03 не обращаем внимание.

Далее получаем ключ:ffffffffffff maxhi=5 maxhii=00ffffff maxlo=5 maxloi=00ffffff

-k ffffffffffff (ключ, который был получен через mfcuk)

В конце должны получить сообщение:

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

Делаем дамп пустого ключа:

И используя утилиту nfc-mfclassic (идет в комплекте с libnfc) записываем дамп в пустой ключ:

Если у вашей болванки Changeable UID или unlocked, т.е. у которой, можно изменить идентификатор и сделать полный дубликат, то запустив:

и получим magic key.

Можно скопировать полученные ключи в любой RFID Emulator на том же Android и использовать свой телефон, как ключ.

Заключение

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

📎📎📎📎📎📎📎📎📎📎