Можно ли сделать копию транспортной карты
Содержание статьи
Проезд в тюрьму. Почему нельзя взламывать «Тройку» по инструкции в Интернете
Бумажные билеты в общественный транспорт стали пережитком времени во всех крупных городах России. На смену им пришли пластиковые карты. Они удобные, но, увы, не без изъянов. Люди давно научились взламывать проездные вроде московской «Тройки», чтобы пользоваться городским транспортом бесплатно. Лайф рассказывает, как работает взлом, а заодно и о его последствиях. Чтобы не было соблазна.
Транспортные карты в большинстве своём делятся на две категории: одни — с чипом NFC, другие — с магнитной лентой. К первым относится большинство современного городского пластика: «Тройка», «Подорожник», «Волна», и не только. Вторые же используются сегодня крайне редко. Но несколько примеров мы нашли в Туле, Благовещенске, а также в Краснодаре.
Несмотря на то что в их основе заложены разные принципы работы, злоумышленники имеют подход к обеим категориям. Но подробнее рассмотрим пример именно с NFC. Другие сегодня пока не актуальны.
Как можно взломать карту? Это же кусок пластика!
Фото © Агентство городских новостей «Москва»
Разберёмся, что из себя представляет транспортная карта в сущности. На первый взгляд это, безусловно, прямоугольный кусок пластика, с картинками, текстом и, возможно, штрихкодом. Последний, как правило, используется для считывания в магазинах-партнёрах транспортных компаний. Впрочем, самое интересное для хакера — внутри.
Если расслоить условный «Подорожник» надвое, можно увидеть Radio Frequency IDentification (RFID) или, вероятнее всего, Near Field Communication (NFC). И то и другое — системы радиочастотной идентификации, которые вполне себе друг друга понимают. Системы эти состоят из двух компонентов — микрочипа и индуктивной антенны. Первый располагается либо в центре, либо на правом или левом краю карты. Служит для хранения небольших объёмов информации. Антенна обвивает карту по периметру и, к слову, служит не только для передачи информации, но и для питания системы.
Самым популярным брендом, под которым выпускаются описанные смарт-карты, является Mifare. Он принадлежит NXP, некогда принадлежавшей компании Philips. Именно NXP занимается производством болванок для «Троек» и «Подорожников», а также чипов NFC для многих Android-смартфонов.
Под брендом Mifare выпускается несколько типов карт. Самые популярные — Ultralight, Classic и Plus. Не будем углубляться в нюансы каждой категории, но отметим, что самыми популярными в России являются Classic и Plus. Оба стандарта совместимы друг с другом, что упрощает взлом второго, если способ для первого уже придуман.
В зависимости от стран, популярные стандарты и сферы их применения могут отличаться. Полный список типов карт и их свойств можно найти здесь. А определить, какого именно типа ваша карта с NFC, можно с помощью официальной утилиты NXP Taginfo.
Как работают карты Mifare?
Фото © Агентство городских новостей «Москва»
Если приводить очень грубую аналогию, то как флешка. Правда, с небольшим объёмом памяти и относительно мощной системой шифрования. В случае с семейством Classic памяти может быть от одного до четырёх Кб. Жалкие килобайты делятся на 16 или 40 секторов. У каждого сектора — четыре блока по 16 байт. Первые три служат для записи билетов, баланса, даты и т.д. Последний блок отводится под ключ шифрования, который, скажем так, сортирует фрагменты информации из первых трёх блоков в определённом порядке. Так, чтобы их нельзя было считать кому угодно. Сортировка происходит после каждого изменения в памяти карты — пополнения баланса или списания средств. Во всяком случае, так должно быть в идеале.
К слову, пара любопытных фактов о смарт-картах вроде «Тройки». Информация на них может храниться вплоть до 10 лет. Есть и другой ограничитель у городского пластика: на устройства типа Mifare Classic нельзя записывать что-либо больше 100 000 раз. Таков физический предел.
И в чём же суть взлома?
Прежде всего отметим, что данная статья написана исключительно для ознакомления читателей с существующей уязвимостью. Ни в коем случае не расценивайте описанную ниже инструкцию как призыв к действию. Знайте также, что взлом транспортных карт может быть истолкован как мошенничество, за которым следует уголовное наказание.
Инструкций в Сети много. В деталях они отличаются, но суть одна. Во-первых, нужен специальный гаджет — NFC-считыватель. Раздобыть его просто: AliExpress предлагает ассортимент на любой вкус. При этом стоит считыватель зачастую не дороже 1500 руб. Он нужен для считывания и записи информации на карту. Во-вторых, потребуются ключи дешифровки. Они на программном уровне позволяют записывать на пластик новые данные. К популярным типам смарт-карт на просторах Интернета можно найти уже готовые ключи. Например, MFUCK для Mifare Classic. В-третьих, потребуются компьютер и навыки работы с командной строкой.
Принцип взлома чрезвычайно прост. Хакер берёт транспортную карту с билетами. Считывателем копирует с неё данные, включая те, что содержат информацию о балансе, делает дамп. Когда деньги кончаются, злоумышленник записывают на карту сохранённые ранее данные, включая деньги.
Фото © Агентство городских новостей «Москва»
Сложно? Есть способ гораздо проще. Всё, что нужно для его реализации, — обычный Android-смартфон с чипом NXP. В Сети можно найти ряд мобильных приложений, которые позволяют перезаписывать данные транспортного пластика, минуя всю возню с командной строкой и ключами. Приложения такие в народе называются дамперами.
Количество городов, в которых транспортные карты можно взламывать, мы не можем назвать. Но точно известно, что в Сети описаны инструкции по перезаписи московского, питерского и нижегородского пластика. Для первых двух есть Android-приложения.
Кстати, у описанной выше инструкции есть не только противозаконные способы применения. NFC-карты и чипы часто используются в качестве офисных пропусков или ключей от домофона. С помощью NFC-считывателя они легко копируются на пустые карты и NFC-брелоки Mifare Zero. В данном случае не нужен даже ключ, так как копируется только идентификационный номер — UID. Он хранится в незащищённых секторах карты.
Собственно, по UID транспортники и блокируют нелегальные «Тройки» и «Подорожники». Компания заносит номера карт в стоп-листы, что запрещает валидаторам их считывать.
Ого, круто! Пойду попробую
Не стоит. Как мы подчеркнули выше, махинации с транспортными картами — уголовно наказуемое преступление. Скорее всего, за обман транспортной компании хакеру припишут статью о подделке, изготовлении или обороте поддельных документов (статья 327 УК РФ). С другой стороны, в августе 2017-го троих изготовителей поддельных «Троек» осудили за нанесение имущественного ущерба (статья 165 УК РФ), неправомерный доступ к компьютерной информации (статья 272 УК РФ) и использование вредоносных компьютерных программ (статья 273 УК РФ).
Подпишитесь на LIFE
Источник
Как взломать транспортную карту. — Cryptoworld
Сразу скажу, я не хакер и не взломщица, а простой фронт-энд разработчик, мои знания по работе с ПК, если отбросить знания во фронт-энд разработке, можно охарактеризовать, как «опытный пользователь».
Я не разрабатывала специальные приложения, как делали это авторы упомянутых статей, а покажу, как доступными средствами можно легко взламывать транспортные карты. Методы взлома известны давно (лет 5-7 точно).
Если бы я, как разработчик, использовала старые версии фреймворков с известными уязвимостями, мне бы давно оторвал работодатель голову, но на разработчиков транспортных систем это, по-моему, не распространяется. Возможно, это связано с низкой подкованностью самих разработчиков.
Но вернусь к взлому. Итак, обо всем по порядку.
Все описанные мною действия я проводила осенью прошлого года, но, насколько мне известно, все работает и сейчас.
Итак, у меня есть недорогой смартфон с NFC. Я в свое время покупала транспортные карты «Ситикард» (так получилось, что у меня их несколько – порой забывала карту то дома, то на работе и приходилось покупать новую).
Я скачала официальное приложение производителя карт Mifare NXP Taginfo и просканировала свою транспортную карту:
Оказалось, что карта основана на чипе Mifare Plus S, но что самое важное, работает она в режиме безопасности № 1. А это значит, что по сути это простая карта Mifare Classic, которая легко взламывается.
Я скачала в Google Play замечательное приложение Mifare Classic Tool и просканировала транспортную карту стандартными ключами:
Тут меня постигло разочарование – ни один из известных ключей не подошел. Соответственно, использовать взлом способом, как было описано в статье про «Подорожник», было не возможно.
«Постойте-ка» — подумала я, «но ведь можно попробовать способ, как описано в статье про взлом «Тройки».
Действительно, у «Ситикард» тоже есть приложение из Google Play, которое позволяет проверять баланс карты, а впоследствии прикрутили возможность и пополнять карту.
Я скачала и установила это приложение. Но теперь передо мной встала дилемма: ключи к карте зашиты или в самом приложении, или «прилетают» с сервера. Декомпиллировать Android-приложения достаточно просто, но я в этом не очень хорошо разбираюсь.
Наверняка, более или менее соображающий разработчик может это достаточно легко сделать. Я такими умениями не обладала и обратилась к брату, который занимается ремонтом домофонов, думала, у него есть знакомый программист, но он предложил более элегантное и простое решение.
Он к тому времени получил плату с Кикстартера, которая позволяет подсматривать протокол между ридером и картой. Оказывается, в домофонах стали использовать брелки, внутри которых зашит все тот же чип Mifare, и эта плата ему понадобилась для каких-то дел, связанных с этими брелками (я в подробности не вдавалась).
Итак, он взял свою плату, поместил ее к моему смартфону, который выступил в роли ридера, а в роли карты выступила собственно транспортная карта, и снял лог обмена данными между ридером и картой.
Дальше встал вопрос, что делать с полученным логом. Но непродолжительный поиск в Интернете привел к утилите под название crapto1gui. Ссылки приводить не будут, достаточно легко находится и так.
Скриншот утилиты привожу ниже (взято с одного из сайтов в интернете, так что данные там не реальные, которые мы использовали).
В общем, достаточно в эту утилиту вставить нужные куски лога и 6-байтный ключ мгновенно вычисляется. Я сама удивилась, как легко это делается, самое сложное было скопировать нужные части из лога и вставить в соответствующие поля программы.
Затем я открыла все тоже приложение Mifare Classic Tool (MCT), вставила в приложение полученный ключ и на этот раз мне отобразилось содержимое 0-го и 8-го секторов.
В нулевом секторе в основном были одни нули, а вот в восьмом были какие-то данные, из чего я сделала вывод, что данные по транспортной карте хранятся в 8-м секторе (как и в карте «Тройке» — неужели один и тот же разработчик?), а полученный ключ оказался ключом B (у сектора два ключа A и B).
Дальше, ради интереса, я с помощью опенсорсной утилиты libnfc и ридера бесконтактных карт получила и все остальные ключи от карты (подробнее об этом было написано в статье про «Подорожник» — я тоже использовала этот способ. Он также описан на сайте libnfc).
[ad name=»Responbl»]
С помощью полученных ключей я попробовала прочитать содержимой другой транспортной карты. Оказалось, что ключ A совпадал, а ключ B – нет. Но с помощью упомянутой утилиты его тоже оказалось легко получить.
Дальше я принялась исследовать содержимое транспортной карты. 8-й сектор состоит из 4-х блоков по 16 байт. С помощью MCT стало понятно, что первый блок является т. н. Value-блоком. Первым делом пришла мысль, что в этом блоке и хранится баланс карты. С помощью MCT удалось его декодировать – он содержал число 2147483647. На баланс карты, будь он даже в копейках, это явно было не похоже.
Потом я совершила поездку по этой карте и обнаружила, прочитав содержимое сектора, что значение не поменялось, а вот содержимое других блоков изменилось. Из чего был сделан вывод, что баланс карты хранится в них.
Разбирать содержимое карты особого желания не было, ведь я хотела попробовать так называемую replay attack (это я уже потом узнала, как она правильно называется).
Утром перед поездкой в метро я сохранила содержимое восьмого сектора, приложила карту к турникету и отправилась на работу. Днем же, отправившись по делам, я с помощью MCT записала предыдущее состояние карты и попробовала проехать в метро… И у меня получилось!
(картинка не моя — мне совсем не хотелось привлекать внимание)
Так я поняла, что таким образом можно делать «вечный проездной». Я решила немного побаловаться и записала содержимое сектора транспортной карты в домофонный брелок.
(вот такой же брелок я использовала для записи в него транспортной карты)
Я попробовала пройти через турникет, приложив брелок, но тут меня постигло разочарование – брелок, к моему удивлению, не сработал. Я подумала, что мою транспортную карту заблокировала (ведь брелок был ее клоном), но при прикладывании «оригинала» (транспортной карты) пройти через турникет удалось.
Я поговорила с братом, хотела узнать, что он думает по этому поводу, и он мне рассказал, что у каждой карты и брелка есть свой идентификационный номер. По всей видимости, мой «клон» был не полным, а содержимое в карте неким образом завязано на ее номер.
Но оказалось, что был выход и из этой ситуации: есть некоторые виды брелков, которые по виду точно такие же, но у них можно менять их номер (у обычных транспортных карт это сделать не получится). Более того, в MCT есть такая функция по перезаписи номера, поскольку он храниться в первом блоке нулевого сектора.
Правда, почему-то поменять номер с помощью MCT не получилось. Но получилось это сделать с помощью ридера и все того же libnfc.
На сей раз у меня получился полный клон транспортной карты в виде брелка, ведь даже номер совпадал. Я попробовала пройти через турникет по домофонному брелку, и это у меня легко получилось. В автобусе прикладывать брелок не рискнула, поскольку тетенька кондуктор могла бы очень удивиться, а вот «вечная» транспортная карта сработала тоже без проблем.
Итак, подводя итоги, можно сказать следующее: транспортные карты для оплаты проезда в Нижнем Новгороде так же легко взламываются, как и «Тройка» (Москва) и «Подорожник» (Санкт-Петербург).
Даже я, девушка, не имея специальных знаний, но умеющая скачивать Android приложения и пользоваться поиском в Гугле и Яндексе, смогла это сделать с использованием подручных средств и доступных в открытом доступе программ и утилит (будь я разработчиком, наверное, это было бы даже легче, хотя куда уж легче…) Да, мне понадобилось некоторое время на поиск в интернете и на изучение форумов, но все оказалось очень просто.
Хочу сразу отметить, предвидя вопросы, что никакого ущерба метрополитену нанесено не было – я учитывала все поездки, совершенные по «вечному проездному», поэтому соответствующий сумме таких поездок остаток на карте не стала расходовать, а саму карту потом уничтожила.
Но ведь злоумышленники не такие сознательные, наверняка они пользуются подобной уязвимостью и наносят ущерб городскому транспорту. Мы же получаем регулярно растущие тарифы на проезд (может быть, в том числе из-за потерь по подделке транспортных карт). Кстати, залог за транспортную карту составляет 50 руб. А ведь точно такие же по безопасности карты Mifare Classic стоят 12,5 руб и ниже.
Складывается ощущение, что все транспортные системы, где используются транспортные карты, небезопасны. Не хочу рассуждать, почему так происходит (эта тема не для Хабра), остается лишь задать вопрос: кто (какой город) следующий и когда ждать про это статью на Хабре?
[ad name=»Responbl»]
PS Данная история, конечно же, выдуманная. Все персонажи — вымышленные, все совпадения — случайны. Ну, вы поняли…
Оригинал тут — habrahabr.ru/post/325776/
Click to rate this post!
[Total: 63 Average: 3]
Источник
Code Работа КА немножко о програмировании
Hakcerman может взломать даже время LaserUnicorns / YouTube
Пользователь портала «Хабрахабр» сообщил об уязвимости в системе карты «Тройка», а также создал приложение, которое позволяет бесплатно пополнять баланс карты.
Как пишет в своем посте Игорь Шевцов, вся работа была проведена без использования специальных технических средств — ему понадобился только Android-смартфон с NFC-чипом. На поиск уязвимости у него ушло 15 дней. Для взлома системы Игорь Шевцов использовал мобильное приложение «Мой проездной», через которое он смог получить доступ к памяти карты и изучить структуру хранения данных.
Больше всего времени заняло изучение структуры данных в памяти карты. Это оказалось возможным из-за того, что данные хранятся в незашифрованном виде. В случае, если бы данные в памяти карты были зашифрованы, вероятнее всего, потребовалось бы физическое проникновение в системы работающие с картой, что делает атаку существенно сложнее.
В результате, найденные «дыры» в системе позволили выполнить подделку баланса, который записан на электронном кошельке карты «Тройка».
Программист также создал приложение для Android под названием TroikaDumper, которое можно скачать с GitHub, и дал рекомендации, как избежать финансовой блокировки.
Не оперируйте суммами баланса более 100 рублей. Никогда не проходите в метро два раза с одинаковым временем последнего прохода. После записи дампа обновите текущее время на карте используя валидатор в наземном транспорте. То есть, перед каждым проходом в метро нужно выполнить списание через желтый валидатор в автобусе или трамвае.
Как заявил разработчик, для исправления недочетов системы «необходимо усовершенствование формата хранения данных в памяти карты и обновление программного обеспечения всех систем, работающих с картой».
Представитель Департамента транспорта и развития дорожно-транспортной инфраструктуры заявил, что об уязвимостях им ничего не известно.
Приложение TroikaDumper позволяет читать, сохранять и восстанавливать записанное состояние памяти карты Тройка. Для использования необходим телефон с версией Android ≥ 4.4 и NFC чипом, поддерживающим карты Mifare.
NFC чип должен быть произодства NXP wikipedia.org/wiki/List_of_NFC-enabled_mobile_devices
Чипы производства Broadcom и другие работать не будут.
Неполный список поддерживаемых телефонов supported_phones_list.txt
Инструкция
Установите приложение скачав его по ссылке TroikaDumper.apk
Запустите приложение и поднести карту Тройка.
Должно отобразится состояние баланса, время последнего прохода и т. д.
При считывании карты состояние памяти автоматически сохраняется и доступно в архиве (нижняя правая кнопка в виде папки)
Для записи дампа памяти на карту выберите нужный дамп из архива и нажмите кнопку запись.
Кнопка записи находится левее кнопки архива.
Как избежать блокировки карты
Не оперируйте суммами баланса более 100 рублей
Никогда не проходите в метро два раза с одинаковым временем последнего прохода. После записи дампа обновите текущее время на карте используя валидатор в наземном транспорте. То есть, перед каждым проходом в метро нужно выполнить списание через желтый валидатор в автобусе или трамвае.
Интерфейс программы
➥ ✈Источник
Поиск IT персонала. Давайте решать задачи вместе! rabota@rabota-ka.ru
Источник