Как сделать клон карты доступа
Копирование RFID карт
Четвёртый урок из цикла «Всё про RFID».
Сегодня мы продолжим изучать RFID считыватель на базе микросхемы RC522.
Допустим вы хотите сделать дубликат карты, что бы у вас одна карта была в офисе, другая в машине, а третья в кармане.
Копирование карт не сложнее, а то даже и проще чем запись. Надо просто поднести карту и на клавиатуре нажать 1 и ENTER.
Подождать пока карта считается.
Нажать 2 и снова ENTER.
Подождать и вуаля. У вас полная копия карты.
Ну, почти полная, так как UID всё же остался старым. Как это побороть, я рассказал в видео.
Объяснять схему подключение не буду. Я это делал уже на протяжении трёх уроков. Если что не понятно пишите в комментариях или посмотрите предыдущие уроки.
Теперь давайте посмотрим весь процесс в целом.
Сначала мы загрузим dumpinfo и посмотрим на содержимое карт.
Будем рассматривать сектора от 0 до 3.
Чистая карта
Карта с информацией
Теперь загрузим скетч, который я назвал Reader.
Проверяем карты. Смотрим вдруг там есть какая-то информация и мы можем её затереть.
Сначала смотрим брелок.
Он оказался чистым и готовым к записи.
Если там была какая-то информация и вам её не жалко, то при следующей записи она сотрётся и поверх неё запишется новая.
То же смотрим с картой 1.
А вот на карте 2 находится нужная для нас информация. Вот её то мы и будем копировать.
Теперь скопируем нашу карту на брелок и на ещё одну карту.
Загружаем скетч COPIER.
Ждём пока в мониторе порта не покажется меню с выбором действия.
Если нажать на кнопку 1 то мы скопируем карту в буфер обмена, а цифра 3 запишет информацию на новую карту.
Главное, чтобы во время работы карта была в зоне действия считывателя, а то данные не считаются или не сохранятся.
Считываем данные с карты.
Ждём пока не снова не появится меню.
Нажимаем 3, и ждём пока информация не скопируется на брелок.
То же самое делаем со следующей картой.
Снова загрузим Reader и проверим как всё прошло.
По очереди подносим брелок и карты к считывателю и смотрим на вывод сохранённых данных.
Как можно увидеть вся информация скопировалась.
Теперь у вас есть целых 3 метки и можно их терять или ломать. Всегда есть запасная, и можно ещё их наделать целую кучу.
Ну вот и всё. Всё, как всегда, работает.
Готовые скетчи можно будет скачать по ссылкам в описании, а текстовую информацию можно прочитать в блоге. Там есть много интересного. Так что переходите.
И, как всегда, в конце урока я прошу вас поставить лайк этому видео, если оно вам понравилось. И жду ваших комментариев.
Следующее видео будет про вывод информации в программу Excel для отображения данных. Это будет очень интересный пример.
И чем больше ваших положительных отзывов, тем быстрее оно выйдет.
До встречи в следующих уроках.
Как сделать клон карты доступа
Здравствуйте, нужна помощь для решения следующей задачи:
Подключение двух телевизоров к одной линии цифрового ТВ.
Возможные варианты решения:
1 (Легальный) приобретения второго CAM – модуля у провайдера.
Достоинства:
— простота реализации;
Недостатки:
— единоразовый платеж 450р, ежемесячная абонентская плата за аренду. CAM – модуля 10р, за подключение 2 ТВ 300р в месяц. (Из разговора с техподдержкой).
2 (Полулегальный) подача письменного заявления о утере (порче) имеющегося CAM-модуля с выдачей нового.
Достоинства:
— относительная простота реализации;
Недостатки:
— единоразовый платеж 450р;
— нет уверенности в том, что при получение второго модуля первый продолжит функционировать. Так как существует вероятность того, что у провайдера имеется некая база в которой занесены данные о моей карте доступа на основе которых предоставляется (или не предоставляется) цифровой контент, и в случае удаления этих данных из базы карта станет бесполезной.
Это всего лишь предположение, так как знаний в этой области у меня нет, собственно тут и нужна помощь сведущих. Подскажите так ли это на самом деле или нет.
3 (Не легальный) приобрести левый CAM – модуль и сделать клон имеющейся карты доступа.
Достоинства:
— не требуется обращение к провайдеру;
— полезный жизненный опыт )).
Недостатки:
— трудность реализации;
— не определенные денежные траты;
— мало информации по данной теме;
Тут так же нужна помощь так как вопросов очень много, начиная от того, где найти тех кто может выполнить клонирование карты доступа, сколько это стоит, какие есть подводные камни. Если найти не удастся, то как реализовать задуманное самостоятельно, какое оборудование понадобится (модули, карты, программаторы, софт и т.д.) и имеет ли смысл все это затевать?
З.Ы. Знаю что для просмотра спутникового ТВ клонирование успешно применяют.
Для пунктов 2 и 3 есть еще один важный вопрос – могут ли в принципе параллельно декодировать цифровой сигнал два CAM-модуля подключенные к одной линии. Тут вопрос в том каким образом осуществляется передача цифрового ТВ к конечному пользователю.
Возможно есть другие пути решения данной задачи, жду ваше помощи. Спасибо!
второй способ вычеркивай.
третий способ в принципе реален. ищи подробнее про клон спутниковых карт. сами карты аналогичные.
Клонируем бесконтактную карту с помощью мобильного приложения
Всегда было интересно посмотреть, что происходит у банковской карточки под «капотом». Как реализуется протокол общения банковской карточки и POS-терминала, как это работает и насколько это безопасно. Такая возможность предстала передо мной, когда я проходил стажировку в компании Digital Security. В результате при разборе одной известной уязвимости EMV карт в MagStripe-режиме, было решено реализовать мобильное приложение, которые способно общаться с терминалом по бесконтактному интерфейсу, с использованием своих команд и подробным разбором запросов и ответов. А также попробовать реализовать способ клонирования карт MasterCard в режиме MagStripe.
В этой статье я постараюсь описать, что такое EMV-карта, как она работает и как используя Android можно попытаться клонировать вашу MasterCard карту.
«There are some things money can’t buy. For everything else, there’s MasterCard»
Что такое EMV карта?
EMV — это международный стандарт для банковских карт с чипом. В разработке этого стандарта принимали участия Europay + MasterCard + VISA, отсюда и название. Попробуем разобраться, как же все таки карта общается с POS-терминалом по бесконтактному интерфейсу.
Начнем с самых основ.
Бесконтактная EMV карта на физическом уровне работает почти так же, как и RFID метка. Если базисно то, чип попадает в электромагнитное поле, а в замкнутом проводящем контуре (в нашем случае это будет антенна, расположенная по периметру), помещенном в переменное магнитное поле, образуется переменный электрический ток. Этот ток заряжает специальный конденсатор, подключенный параллельно к резонансному контуру карты. Энергия, запасенная в конденсаторе, используется для выполнения микросхемой карты различных операций. Когда ридер изменяет электромагнитное поле, изменения сразу будут заметны на чипе. Используя модуляцию сигнала, мы можем передавать информацию в бинарном виде. Если на карте подключить нагрузочное сопротивление и или изменить емкость конденсатора, то можно изменить силу тока в контуре карты, что приведет к изменению создаваемого им электромагнитного поля в области контура ридера, таким образом карточка передает данные. Ридеру останется детектировать эти изменения. Подобное физическое взаимодействие регламентируется стандартом ISO/IEC 14443 “Identification Cards — Contactless integrated circuit(s) cards — Proximity cards”.
Сам чип карты представляет собой смарт карту, на которой работает JavaCard, отдельная версия Java для платформ с малыми вычислительными ресурсами и поддержкой криптографических алгоритмов. На JavaCard загружаются апплеты, которые, и являются приложениями. Также существует GlobalPlatform это некий стандарт для JavaCard, который предоставляет возможность безопасного управления данными на карте и позволяет загружать, изменять и удалять приложения на карте. В этой статье механизмы безопасности самой смарт карты мы рассматривать не будем. Достаточно знать, что защищенные данные, например приватный ключ и секретный мастер ключ карты лежат в защищенном месте и вытащить их стандартными средствами невозможно.
Также еще напомню немного терминологии, для тех, кто не знаком.
POS-терминал (Point of Sale) — устройство продавца, которое считывает карту и инициирует платеж. Далее будем называть это устройство просто терминалом.
Банк эмитент — это банк, который выпустил вашу карту.
Банк эквайер — банк, который выдает продавцам POS-терминалы и обрабатывает платежи с них.
Платежная система — центральное звено между банком эквайером и банком эмитентом, через нее проходят абсолютно все платежи, и она знает какой банк какому сколько должен перевести денег. Платежных систем в мире не мало, кроме всем известных Visa и MasterCard есть ещё и American Express, China UnionPay и российская платежная система МИР.
Хорошо, карта и ридер могут общаться. Они посылают друг другу APDU-команды в виде Tag-Length-Value т.е. передается название тэга в шестнадцатеричном виде, его длина и само значение. Все команды описаны конечно же в документации и выглядят примерно так:
Стандартная EMV транзакция проходит в несколько этапов, я опишу полный алгоритм взаимодействия в случае контактного интерфейса, для бесконтактного интерфейса алгоритм несколько укорочен:
Коротко рассмотрим каждую операцию.
Выбор приложения. Часто бывает, что на одной карте может быть несколько приложений. Например, банковская карта и проездной билет. И терминалу как-то необходимо разобраться, где и какой алгоритм ему использовать. Для выбора приложения используются так называемые Идентификационные Коды приложения (Application Identifier – AID). Что бы в этом разобраться терминал посылает команду SELECT. Например, AID карты Visa Classic будет выглядеть следующим образом: A0000000031010. Если в ответ придет несколько таких кодов и терминал умеет работать с несколькими приложениями, то терминал выведет на экран список и предложит выбрать нужное нам приложение. Если терминал не поддерживает ни один из кодов приложений, то операция будет отклонена терминалом.
Инициализация обработки приложения. Здесь сначала проверяется географическое место пребывания. Например, карты Maestro Momentum могут работать для оплаты только в России. Этот этап сделан для того, чтобы предоставить эмитентам возможность применять существующие онлайн методы риск-менеджмента при проведении офлайн операций. На этом этапе EMV-транзакция может быть отменена по инициативе самой карты, если данный тип операции запрещен в данной стране мира эмитентом. Далее карта передает терминалу набор специально структурированной информации, содержащей описание функциональности карты и приложения.
Считывание данных приложения. Терминалу передаются различные данные карты необходимые для транзакции, например номер карты, expiration date, счетчик транзакций и много других данных. О некоторых из них будет сказано далее.
Офлайн аутентификация. Терминал определяет тип поддерживаемого метода оффлайн аутентификации. Существует статичная (Static Data Authentication – SDA), динамическая (Dynamic Data Authentication – DDA) и комбинированная (Combined Data Authentication – CDA). Эти методы также построены на основе PKI. SDA это просто подписанные данные на приватном ключе банка эмитента, DDA — терминал посылает какое-то случайное число и карточка должна подписать его, используя свой приватный ключ, а терминал проверит эту подпись используя полученный ранее сертификат карты, таким образом терминал удостовериться в том, что карточка и правда обладает приватным ключом — следовательно является подлинной. CDA это просто комбинация обоих способов.
Обработка ограничений. Здесь терминал проверяет полученные ранее данные с карты на условие пригодности для данной операции. Например, проверяет срок начала/окончания действия приложения Application Expiration Date (Tag ‘5F24’) и Application Effective Date (Tag ‘5F25’). Также производится проверка версии приложения. Результаты операций, проводимых на данном этапе, также записываются в отчет TVR (Terminal verification results). По результатам этого этапа транзакция не может быть отменена, даже в случае, если, например, срок действия приложения истек.
Проверка держателя карты. Верификация держателя карты производится для того, чтобы аутентифицировать человека, предоставившего карту и проверить, является ли он подлинным владельцем карты. Стандарт EMV предоставляет различные методы верификации держателя карты (Cardholder Verification Method). Методы верификации определены как на терминале, так и на карте. Они содержатся в так называемых CVM-листах. В процессе выполнения, терминал и карточка сравнивают полученные CVM-листы и выбирают общий метод верификации.
Список поддерживаемых методов верификации:
Риск-менеджмент на стороне терминала. На этом этапе терминал проводит внутреннюю проверку параметров транзакции, исходя из установок риск-менеджмента банка-эквайера. Процедуры риск-менеджмента могут быть выполнены терминалом в любое время между моментами завершения процесса чтения данных карты и формирования терминалом первой команды GENERATE AC. Риск-менеджмент на стороне терминала включает в себя три механизма:
Риск-менеджмент на стороне карты. Карта, получив из команды GENERATE AC данные, касающиеся транзакции, терминала и результатов проверок терминала, в свою очередь выполняет собственные процедуры управления рисками и выносит собственное решение о способе завершения операции.
Анализ действий карты. На этом этапе карта завершает проведение процедур риск-менеджмента и формирует ответную криптограмму терминалу. Если карта решает одобрить транзакцию, то формируется Transaction Certificate. Если карта принимает решение о выполнение операции в режиме реального времени, то она формирует ARQC (Authorization Request Cryptogram). Если карта использует альтернативные методы авторизации, тогда используется Application Authorization Referral. В случае, если карта отклоняет транзакцию, то Application Authentication Cryptogram.
Еще одна криптограмма ARPC (Authorization Response Cryptogram) нужна для аутентификации эмитента. Эмитент формирует криптограмму ARPC и отсылает криптограмму карте, если карта подтвердит пришедшую криптограмму, то следовательно, эмитент аутентифицирован картой.
Немного о безопасности ключей и взаимной аутентификации карты и эмитента из книги И. М. Голдовского:
Смысл взаимной аутентификации заключается в том, что карта и терминал аутентифицируют друг друга с помощью проверки подлинности криптограмм ARQC и ARPC. Криптограммы представляют собой данные, формируемые с использованием секретного ключа (который известен карте и банку эмитенту), номера транзакции, случайного числа, сгенерированного терминалом, а также некоторых реквизитов транзакции, терминала и карты. В случае ARPC к перечисленным данным еще добавляется авторизационный код ответа эмитента. Без знания секретного ключа карты для генерации криптограммы вычислить значения ARQC/ARPC невозможно за обозримое время с текущим уровнем технологий, и потому факт их успешной верификации указывает на подлинность карты и эмитента. Онлайн аутентификация является наиболее надежным способом аутентификации карты. Это связано с тем, что она выполняется непосредственно эмитентом, без посредника в виде терминала. Кроме того, для онлайновой аутентификации используется алгоритм 3DES с временным ключом размером 112 битов, криптостойкость которого соответствует криптостойкости алгоритма RSA с длиной модуля асимметричного ключа, используемого для офлайн аутентификации приложения карты, более 1700 бит. Использование на карте асимметричных ключей такой длины все еще достаточная редкость. Обычно используются ключи с модулем длиной 1024, 1152 или 1408 бит.
В конечном итоге онлайн транзакция проходит по цепочке:
Карта POS-Терминал Банк Эквайер Платежная Система Банк Эмитент.
Клонируем карту MasterCard в режиме MagStripe
Перейдем непосредственно к принципу клонирования. Данный метод атаки на бесконтактные карты был опубликован двумя исследователями Michael Roland, Josef Langer из Австрийского университета. В его основе лежит общий принцип, который называется Skimming. Это такой сценарий, при котором злоумышленник крадет деньги с банковской карточки путем считывания (копирования) информации с этой карты. В общем случае здесь важно сохранять PIN-код в тайне и не допускать его утечки. Но в методе австрийских ребят это нам знать не нужно. Клонирование платежной карты выполняется успешно для версии ядра приложения EMV Contactless Kernel 2. Версия этого протокола поддерживает два режима работы для бесконтактных карт: EMV протокол (MasterCard PayPass M/Chip) и MagStripe (MasterCard PayPass MagStripe) режим.
MagStripe — это режим поддержки карт с магнитной полосой. Этот режим реализуется на картах MasterCard с бесконтактным интерфейсом. Режим MagStripe скорее нужен для банков которым сложно переводить всю инфраструктуру для поддержки чиповых бесконтактных EMV транзакций. Кстати, у карт Visa также есть аналогичный режим работы — PayWave MSD (Magnetic Stripe Data).
Процесс обработки транзакции для бесконтактных карт урезан в сравнении с чиповыми и обычно работает в следующем режиме:
Это выглядит как APDU команды. Список всех тэгов.
APDU — Application Protocol Data Unit — это условное обозначение кадра с командой карте или ответом карты.
На хабре есть пара статей на эту тему тут и тут.
Карта поддерживает специальную команду COMPUTE CRYPTOGRAPHIC CHECKSUM, аргументом которой являются данные, определенные в объекте Unpredictable Number Data Object (UDOL). В результате карта с помощью алгоритма 3DES и секретного ключа вычисляет динамическую величину CVC3 (Card Verification Code). В качестве аргумента функции 3DES используется конкатенация данных UDOL и счетчика транзакции (Application Transaction Counter,ATC). Таким образом, значение величины CVC3 всегда зависит от объектов UN и ATC.
Другими словами, эта команда нужна, чтобы карта сгенерировала некую “подпись” для того, чтобы эмитент мог верифицировать карту. Однако, в этой подписи отсутствует подпись самой транзакции. В подписи содержатся значения ATC — 2 байта, CVC3 (Track1) — 2 байта, CVC3 (Track2) — 2 байта, которые генерируются картой на основе секретного ключа, который также знает банк-эмитент и счетчика транзакций (ATC). При этом также для генерации подписи POS-терминал сообщает карте UN (Unpredictable Number) — 4 байта, который также используется в генерации подписи. Unpredictable Number препятствует формированию кодов аутентификации на реальной карте для последующего использования в мошеннических транзакциях. Для атаки нам сильно мешает UN, поскольку 4 байта не представляется возможным перебрать, не выйдя за пределы счетчика транзакций. Однако, в спецификации этого есть некоторые слабости.
Во-первых, спецификация ограничивает UN кодировкой чисел, а именно Двоично-Десятичным Кодом (BCD), что по сути означает что, если мы посмотрим на такое закодированное число в HEX, то мы увидим только цифры от 0 до 9, все остальные значения считаются как бы запрещенными. Таким образом, количество UN уменьшается с 4,294,967,295 до 99,999,999.
Во-вторых, количество значащих цифр UN определяется картой. Таким образом в зависимости от специальных параметров в треках количество цифр в UN может быть от 10 до 10000 в зависимости от типа карты, на практике чаще всего встречается 1000 значений.
Таким образом план атаки выглядит следующий: