Хакер - СКУД глазами хакера. Атакуем системы контроля доступа на основе RFID
hacker_freiThund3rb0lt
Содержание статьи
- Как устроен EM4100?
- Векторы атак на СКУД с EM410X
- Копирование оригинального пропуска
- Генерация новых UID на основе существующих
- Брутфорс значений идентификаторов
- Пара слов о считывателях
- Компрометация за одно фото
- Методы защиты
Взлом электронных турникетов на входе в здание — заветный хакерский флекс, который так любят показывать в кино. В этой статье я расскажу о системах удаленного контроля доступа (СКУД) на основе RFID, и мы вместе разберемся, насколько просто подделать самый распространенный идентификатор EM4100.
Термины
- СКУД (англ. PACS) — комплекс оборудования, предназначенный для ограничения доступа на охраняемом объекте. Минимальная конфигурация такой системы — это
бухой вахтерэлектронный замок на основе RFID. - RFID — способ автоматической идентификации объектов с помощью радиосигналов, хранящихся на транспондерах (RFID-метках).
- RFID-метка — сборное устройство для хранения информации, состоящее из интегральной схемы (чипа) для выполнения операций с сигналом и информацией, антенны для передачи и приема сигнала и, опционально, батареи питания (не распространено в повседневном применении — дорого и избыточно).
Более подробную информацию о RFID можно найти в Википедии.
EM410X — крайне популярная модельная линейка идентификаторов, разработанная компанией EM Microelectronics. В повседневной жизни они применяются самыми разными способами: от использования в СКУД государственных (и не только) учреждений до маркировки и учета животных.
Сюда входят чипы с идентификаторами EM4100, EM4102, EM4105 и EM4200, которые различаются объемом памяти (от 64 до 128 бит) и областью применения.
ИДЕНТИФИКАТОРРАБОЧАЯ ЧАСТОТАОБЪЕМ ПАМЯТИРАЗМЕР UIDКРИПТОГРАФИЯСФЕРА ПРИМЕНЕНИЯEM4100100–150 кГц64 бита5 байтНетСКУД, логистикаEM4102100–150 кГц64 бита5 байтНетУчет и маркировка животныхEM4105100–150 кГц128 бит8 байтНетУчет и маркировка животныхEM4200100–150 кГц128 бит8 байтНетСКУД, логистикаФормально все эти идентификаторы работают на частоте 125 кГц, однако могут использовать диапазон частот, указанный в таблице выше.
Наиболее широко используются (и просты в понимании) идентификаторы EM4100, поэтому мы остановимся именно на них.
КАК УСТРОЕН EM4100?
Структура данных в идентификаторе EM4100 выглядит следующим образом.
Самая важная для нас в этой схеме группа из голубых и синих битов, которые вместе составляют 5 байт (40 бит) и служат уникальным идентификационным кодом RFID-метки.
На этом теоретическая часть окончена. Давай посмотрим, как выглядят атаки на подобные системы.
ВЕКТОРЫ АТАК НА СКУД С EM410X
Ни в одной из вариаций у EM410X нет криптографии или какого‑то другого способа защиты. Поэтому все векторы атак, которые мне удалось обнаружить, связаны либо с принципиальными недостатками самих идентификаторов, либо с их небезопасной эксплуатацией.
В качестве цели атаки давай рассмотрим автономную (не интегрированную с прочими системами) СКУД с бесконтактными считывателями. Это самый простой вариант для понимания и воспроизведения атаки.
Итак, наша цель — получение как минимум одного постоянного физического доступа в помещение, вход в которое ограничен с использованием этой технологии.
Копирование оригинального пропуска
Поскольку EM410X не использует никакой защиты передаваемых данных, их копирование не представляет ни малейшей сложности.
Я не буду здесь рассматривать получение валидного пропуска для копирования, как и сам процесс создания клона. Все это может сильно различаться в конкретных случаях. Особо любопытствующим могу порекомендовать гайды от Lab401 и Dangerous Things.
Однако это слишком просто, не правда ли? Как насчет того, чтобы немного расширить количество доступных нам валидных пропусков без получения их оригинальных физических копий?
Генерация новых UID на основе существующих
Представим, что у нас есть абстрактная организация, СКУД в которой использует идентификаторы EM4100. Станет ли она закупать каждый из них по отдельности?
Зайдем с другой стороны. Что будет проще для специалиста, который настраивает систему: заносить каждый идентификатор в базу по отдельности или зарегистрировать их группой?
Скорее всего, ты уже понял, к чему я пытаюсь тебя подвести. При известном UID одного из валидных идентификаторов с большой вероятностью «соседние» по значению UID-идентификаторы тоже будут распознаны системой как валидные.
Рассмотрим пример: у нас есть идентификатор с UID 12 00 EC DA A1
. При увеличении (или уменьшении) старшего байта мы должны получить также валидное для системы значение идентификатора. Таким образом, следующие UID будут иметь значения
12 00 EC DA A2
12 00 EC DA A3
12 00 EC DA A4
12 00 EC DA A5
12 00 EC DA A6
...
Все они с высокой долей вероятности будут валидными.
Действительно ли это так? Не всегда. На практике в системе может не быть каких‑то идентификаторов из списка, или их могли заблокировать. Проверить это можно только вживую на конкретном примере, но разве это не добавляет в задачу немного здорового азарта?
Брутфорс значений идентификаторов
При виде списка из предыдущего пункта у тебя мог возникнуть вполне логичный вопрос: возможно, быстрее и надежнее будет воспользоваться брутфорсом? И действительно, это не худший вариант, благо для его реализации существует множество удобных решений, таких как Flipper Zero, Proxmark III и DIY на Arduino. Единственный минус такого метода — сотрудники охраны явно не будут просто стоять и смотреть, как ты подносишь к считывателю странное устройство.
Кстати, раз уж мы заговорили о методе грубой силы, как насчет посчитать общее количество возможных значений идентификаторов? Если ты с ходу ответил: 2565 вариантов, то мои поздравления!
Хотя, стоп... а всегда ли 2565?
Пара слов о считывателях
Мы пока что говорили только об идентификаторах и тех проблемах, которые связаны конкретно с ними. Но как насчет считывателей идентификаторов, которые и «принимают решение», пропускать то или иное лицо на охраняемый объект?
Что ж, тут есть свои нюансы. Хотя количество байтов, составляющих UID идентификатора, никогда не меняется (их всегда пять), это не означает, что все они будут использоваться для проверки валидности.
Вероятно, ты сейчас не совсем понимаешь, как такое возможно. Чтобы выйти из этой неловкой ситуации, советую прочитать статью про Wiegand — широко распространенный интерфейс связи между устройством чтения идентификатора и контроллером.
Если кратко, то большинство «дешевых», а также старых систем СКУД используют Wiegand-26, который способен передавать только 24 бита данных (и 2 бита четности), что, как ты понимаешь, существенно сокращает рассчитанный нами ранее пул возможных значений идентификатора до 2563.
Соглашусь, это все еще много. Хотя есть один способ сократить их число до 256 либо отбросить необходимость брутфорса в целом...
Компрометация за одно фото
Никогда не задумывался, что за странные цифры нанесены на твою RFID-карту?
Конечно, они здесь не просто так. На самом деле по факту эти цифры являются частью UID, но в десятичном формате.
Рассмотрим пример с этой карты:
- 0008671306 = 0x0084504A — 4 байта UID;
- 132 = 0x84 — ID клиента отдельно;
- 20554 = 0x504A — 2 старших байта отдельно.
Оригинальный UID идентификатора: 4E 00 84 50 4A
.
INFO
На всех идентификаторах, которые мне удалось достать, второй байт всегда оказывался нулевым. Неизвестно, совпадение это или негласная договоренность производителей.
Получается, часто всего по одной фотографии идентификатора можно создать его валидную для проверяющей системы копию либо понизить количество перебираемых значений вплоть до 256 вариантов. Неплохо, правда?
МЕТОДЫ ЗАЩИТЫ
Теперь, когда ты узнал о возможных векторах атак на СКУД, у тебя наверняка возник вопрос: можно ли защититься от рассмотренных выше атак или хотя бы смягчить их последствия?
И да, и нет. Несмотря на то что производители таких систем разрабатывали способы выявления «клонов», внедрение дополнительных систем проверки идентификаторов нецелесообразно, и наиболее простым решением будет перейти на Mifare 1k — не менее популярные идентификаторы, но уже с поддержкой криптографии, которые мы рассмотрим в следующей статье.
Читайте ещё больше платных статей бесплатно: https://t.me/hacker_frei