Как не платить за проезд при помощи Тройка Дампер 2019?

Введение

Бесконтактные платежи становятся все более популярны. На текущий момент общественный транспорт в Москве полностью переведен на бесконтактную систему оплаты. Самым популярным платежным средством становится универсальная карта Тройка, которая активно интегрируется в различные системы помимо общественного транспорта.

. Очевидно, что распространение карты будет только увеличиваться. Транспортная сеть города обслуживает территорию с населением свыше 20 млн человек и обеспечивает перевозку более 350 млн пассажиров в месяц. В свете этого становится важным вопрос защищенности карты.

https://www.youtube.com/watch?v=vc2PgNXY1xo

Целью данного исследования было выяснить насколько защищена карта от подделки баланса электронного кошелька, изучить принцип работы карты. Проверить защищенность инфраструктуры работающей с картой Тройка.

Описание

Тройка Дампер — это мобильное приложение, которое задействует ваш NFC-модуль в смартфоне и сохраняет текущее состояние вашей карты “Тройка”. Сама же Тройка — это проездная карта, которая активно действует в Москве, Ульяновске, Суздале, Муроме, а также в Москвоской, Ярославской и Тульской областях.

По тем или иным причинам “Тройка” может не оказаться рядом в нужный момент. Для таких ситуаций и создано приложение-дампер, которое сканирует вашу карту и сохраняет информацию о её состоянии — дамп.

Автоматы продажи билетов метро

Автомат продажи билетов метро

Служат для продажи проездных билетов и пополнения электронного кошелька карты Тройка. Возможна оплата наличными и кредитными картами с помощью систем PayPass/PayWave.


Работают на базе x86 компьютера под управлением операционной системы Windows. В момент сбоя управляющей программы можно видеть интерфейс операционной системы и служебные программы.

Подключены к сети по технологии Ethernet, замечен UTP кабель, идущий к автомату.

Потенциальный вектор атаки: проникновение во внутреннюю сеть, эксплуатация уязвимостей операционной системы._

Анализ исходного кода

Полученные с помощью Java Decompiler исходные тексты могут быть загружены в любую IDE (Integrated Development Environment) для более удобного изучения. Например, Android Studio.

Декомпилятор не всегда идеально обрабатывает проект — иногда он не справляется и оставляет части smali-кода. Но это не критично, так как главной задачей на данном этапе является анализ кода. Основной целью поиска в исходных текстах программы были ключи для доступа к секторам карты Тройка, описание формата хранения данных в областях памяти карты, содержащих баланс электронного кошелька и механизм пополнения баланса карты.

Беглый анализ исходных текстов позволил найти основные классы и методы работы приложения: регистрацию, работу с кредитной картой, запрос баланса и прочее. Однако ключей для доступа к карте Тройка в исходных текстах обнаружено не было. Было решено не тратить время на подробное изучение исходных текстов, а вместо этого исследовать данные, которыми обменивается приложение с сервером во время работы.

классы в коде приложения «Мой проездной»
image

Анализ памяти карты тройка

Перехваченные из приложения «Мой проездной» ключи доступа к секторам карты Тройка используем для локального чтения памяти карты с помощью Android приложения MCT — Mifare Classic Tool. Приложение позволяет найти все сектора, к которым подходят перехваченные ключи, так называемый перебор по словарю.

данные в памяти карты в шестнадцатеричном формате
image

Атака повторного воспроизведения

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


Все устройства, работающие с балансом электронного кошелька (турникеты, терминал), проверяют достоверность подписи, и, в случае несоответствия подписи, возвращают ошибку “карта неисправна”.

Установлено, что подпись формируется на основе уникального идентификационного номера карты (UID), поэтому клонирование сектора памяти электронного кошелька из одной карты на другую с отличным UID, всегда дает недействительную подпись.

Несмотря на то, что области памяти электронного кошелька защищены с помощью имитовставки, система оказалась уязвима для атаки повторного воспроизведения. Было сохранено состояние памяти сектора электронного кошелька до прохода через турникет, после чего выполнен проход и операция списания 31 рубля с баланса карты.

После чего состояние памяти карты было возвращено к исходному состоянию. В результате, на карте была восстановлена сумма баланса до прохода через турникет. Данную операцию удалось повторить несколько раз. Из этого следует вывод, что система не защищена от подобного вида атак.

шаги атаки повторного воспроизведения
image

Для установления возможности реальной эксплуатации уязвимости было выполнено продолжительное тестирование атаки повторного воспроизведения на инфраструктуре общественного транспорта Москвы. Первым был протестирован наземный транспорт: троллейбусы, автобусы, трамваи.

Электронный кошелек был пополнен единожды на сумму 50 рублей и все проходы через турникеты были выполнены с помощью атаки повторного воспроизведения.В течение пяти дней было совершено 57 поездок в наземном транспорте на общую сумму 1767 рублей. После чего карта была возвращена в кассу метрополитена и был получен возврат залоговой суммы в 50 рублей.

Для тестирования систем метрополитена была куплена новая карта и пополнена на 50 рублей. Все проходы через турникеты были выполнены с помощью атаки повторного воспроизведения. Было выполнено 12 поездок в течение 2 дней на общую сумму 384 рубля. На третий день карта была заблокирована на всех турникетах метро и наземного транспорта.

После полного восстановления состояния памяти карты до состояния на момент приобретения, карта продолжила работать в наземном транспорте, но блокировалась при проходе в метро. Из этого следует, что турникеты в метро имеют защиту от данного вида атак, однако срабатывает она с задержкой в несколько дней.

Валидаторы в метро

Валидатор в метро

Служат для проверки состояния проездных билетов и записи баланса на электронный кошелек карты Тройка. Подключены к сети. Предположительно, работают на базе x86-компьютера и операционной системы Windows.

Потенциальный вектор атаки: проникновение во внутреннюю сеть, эксплуатация уязвимостей операционной системы._____

Валидаторы в наземном транспорте

Валидатор в наземном транспорте

Предположительно, работают локально, без подключения к сети. Поэтому должны содержать в памяти все необходимые данные для выполнения записи баланса на карту. Электронная часть может быть отсоединена с помощью замка снизу. Замечено, что водитель автобуса в конце рабочего дня отсоединяет валидаторы.

Потенциальный вектор атаки: физическое извлечение прошивки и данных из памяти устройства.______

Возможные цели атаки

Был проведен обзор инфраструктуры, работающей с картой Тройка, для установления наиболее привлекательных целей для атаки. Рассмотрены системы, позволяющие производить запись и считывание баланса электронного кошелька. Из основных критериев оценки была доступность для изучения без риска быть задержанным, простота и низкая стоимость.

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

Турникеты в метро


Турникет метро

Потенциальный вектор атаки: проникновение в сеть, MitM.______

Декомпиляция jar в исходные тексты java


Полученные jar файлы теперь можно декомпилировать в исходные тексты языка Java.

Для этого можно использовать любой из доступных Java декомпиляторов, например

Декомпиляция приложения

APK-файл приложения Android является архивом, внутри которого находятся файлы ресурсов, конфигурации, графика и другие мультимедиа данные, а также файл classes.dex, который является скомпилированным кодом приложения.

Запись данных на карту тройка

Права доступа к секторам карт типа Mifare определяются битами доступа в третьем блоке каждого сектора. Биты доступа, установленные в восьмом секторе, разрешают чтение сектора ключом А и запись ключом B. Полученные из приложения «Мой проездной» ключи, позволяют выполнить запись любых данные в сектор электронного кошелька.

И в чём же суть взлома?

Прежде всего отметим, что данная статья написана исключительно для ознакомления читателей с существующей уязвимостью. Ни в коем случае не расценивайте описанную ниже инструкцию как призыв к действию. Знайте также, что взлом транспортных карт может быть истолкован как мошенничество, за которым следует уголовное наказание.

Читайте ещё про NFC:  MST в Samsung Pay — что это, как работает технология | NFC Гид

Инструкций в Сети много. В деталях они отличаются, но суть одна. Во-первых, нужен специальный гаджет — NFC-считыватель. Раздобыть его просто: AliExpress предлагает ассортимент на любой вкус. При этом стоит считыватель зачастую не дороже 1500 руб.

Он нужен для считывания и записи информации на карту. Во-вторых, потребуются ключи дешифровки. Они на программном уровне позволяют записывать на пластик новые данные. К популярным типам смарт-карт на просторах Интернета можно найти уже готовые ключи. Например, MFUCK для Mifare Classic. В-третьих, потребуются компьютер и навыки работы с командной строкой.

Принцип взлома чрезвычайно прост. Хакер берёт транспортную карту с билетами. Считывателем копирует с неё данные, включая те, что содержат информацию о балансе, делает дамп. Когда деньги кончаются, злоумышленник записывают на карту сохранённые ранее данные, включая деньги.

Сложно? Есть способ гораздо проще. Всё, что нужно для его реализации, — обычный Android-смартфон с чипом NXP. В Сети можно найти ряд мобильных приложений, которые позволяют перезаписывать данные транспортного пластика, минуя всю возню с командной строкой и ключами. Приложения такие в народе называются дамперами.

Количество городов, в которых транспортные карты можно взламывать, мы не можем назвать. Но точно известно, что в Сети описаны инструкции по перезаписи московского, питерского и нижегородского пластика. Для первых двух есть Android-приложения.

Кстати, у описанной выше инструкции есть не только противозаконные способы применения. NFC-карты и чипы часто используются в качестве офисных пропусков или ключей от домофона. С помощью NFC-считывателя они легко копируются на пустые карты и NFC-брелоки Mifare Zero.

Собственно, по UID транспортники и блокируют нелегальные “Тройки” и “Подорожники”. Компания заносит номера карт в стоп-листы, что запрещает валидаторам их считывать.

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

Чтобы скопировать карту в смартфон, вам необходимо запустить приложение и поднести саму “Тройку”. Не забудьте активировать модуль 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 раз. Таков физический предел.

Конвертация dalvik executable (dex) в java archive (jar)

Для анализа кода приложения необходимо сконвертировать .dex файлы, полученные из APK архива, в .jar файлы, которые далее могут быть декомпилированы в исходные тексты на языке Java. Это можно сделать с помощью программы dex2jar

Мод версия · issue #4 · gshevtsov/troikadumper

Подскажите, на сайте Мобильного билета указаны следующие модели:
Alcatel One Touch 922
Alcatel One Touch Idol 2 mini S (6036Y)
Alcatel One Touch Idol 2S (6050Y)
Asus Zenfone 2
BlackBerry Bold 9900
BlackBerry Z10
HTC Desire 500 Dual SIM
HTC Desire 600 Dual SIM
HTC Desire 820
HTC Desire EYE
HTC One M9
HTC One SV
HTC One SV LTE
HTC One X (S720e)
Huawei p9 plus
LG Optimus G (E975)
LG G2
LG G3
LG G4
LG G6
Nokia Lumia 620
Nokia Lumia 720
Nokia Lumia 730
Nokia Lumia 735
Nokia Lumia 820
Nokia Lumia 830
Nokia Lumia 920
Nokia Lumia 925
Nokia Lumia 930
Nokia Lumia 1020 LTE
Nokia Lumia 1520
Microsoft Lumia 640 LTE Dual
Meizu MX4 PRO
Meizu PRO 5
Samsung Galaxy A3 (SM-A300F)
Samsung Galaxy A3 2021 (SM-A310F)
Samsung Galaxy A3 Duos
Samsung Galaxy A3 2021 SM-A320F
Samsung Galaxy A5 Duos
Samsung Galaxy A5 (SM-A500F)
Samsung Galaxy A5 2021 SM-A520F
Samsung Galaxy A5 2021 (SM-A510F)
Samsung Galaxy A7 LTE Duos (SM-A700FD)
Samsung Galaxy A7 2021 (SM-A710F)
Samsung Galaxy A7 SM-A700F
Samsung Galaxy A7 2021 SM-A720F
Samsung Galaxy A8 (A530F)
Samsung Galaxy A8 (A730F)
Samsung Galaxy Ace Style LTE (SM-G357FZ)
Samsung Galaxy Core LTE (SM-G386F)
Samsung Galaxy Grand Prime VE LTE (SM-G531F)
Samsung Galaxy J1 LTE (SM-J100FN)
Samsung Galaxy J5 2021 (SM-J510FN)
Samsung Galaxy J7 2021 (SM-J710FN)
Samsung Galaxy J5 2021 (SM-J530FM)
Samsung Galaxy J7 2021 (SM-J730FM)
Samsung Galaxy Mega 6.3 (GT-I9200)
Samsung Galaxy Note 3 Neo LTE (SM-N7505)
Samsung Galaxy Note 3 Neo (SM-N750)
Samsung Galaxy Note 3 (SM-N900)
Samsung Galaxy Note 3 LTE (SM-N9005)
Samsung Galaxy Note 4 (SM-N910C)
Samsung Galaxy Note 5 (N920C)
Samsung Galaxy Premier (GT-I9260)
Samsung Galaxy S3 (GT-I9300)
Samsung Galaxy S4 (GT-I9505)
Samsung Galaxy S4 Active (GT-I9295)
Samsung Galaxy S 4 LTE
Samsung Galaxy S5 (SM-G900F, SM-G900H)
Samsung Galaxy S 5 Duos
Samsung Galaxy S6 (SM-G920F)
Samsung Galaxy S6 Duos (SM-G920FD)
Samsung Galaxy S6 Edge (SM-G925F)
Samsung Galaxy S6 Edge Plus (SM-G928F)
Samsung Galaxy S7 (SM-G930FD)
Samsung Galaxy S7 edge (SM-G935FD)
Samsung Galaxy S8 (SM-G950FD)
Samsung Galaxy S8 (SM-G955FD)
Samsung Galaxy Note 8 (SM-N950F)
Samsung Galaxy S9 (G960F)
Samsung Galaxy S9 (G965F)
Sony Xperia E3 (D2203)
Sony Xperia L (C2105)
Sony Xperia M (C1905)
Sony Xperia M Dual (C2005)
Sony Xperia M2 Aqua (D2403)
Sony Xperia M2 Dual (D2302)
Sony Xperia M4 Aqua Dual (E2333)
Sony Xperia M5 (E5603)
Sony Xperia Sola (MT27i)
Sony Xperia SP (C5303)
Sony Xperia T2 Ultra (D5303)
Sony Xperia T3 (D5103)
Sony Xperia TX (LT29i)
Sony Xperia V (LT25i)
Sony Xperia Z (C6602, C6603)
Sony Xperia Z Ultra (C6833)
Sony Xperia Z LTE
Sony Xperia Z1 (C6902, C6903)
Sony Xperia Z1 Compact (D5503)
Sony Xperia Z2 (D6503)
Sony Xperia Z3 (D6603)
Sony Xperia Z3 Dual (D6633)
Sony Xperia Z3 Compact (D5803, D5833)
Sony Xperia Z5 Dual
Sony Xperia ZL (C6503)
Sony Xperia ZR (C5503)

Читайте ещё про NFC:  Как снять графический ключ с Андроида: инструкция

Однако для работы приложения, указано что необходим мобильный с чипом NFC от NXP.
Подойдет ли для работы с приложением телефон который не указан на официальном сайте но с NFC от NXP (к примеру, LG G5)?

Номер турникета, дата и время прохода

Аналогичная методика была применена для изучения формата остальных данных в секторе. Было выполнено несколько проходов через турникеты метро и сохранено состояние памяти после каждого прохода. Проходы были выполнены с интервалом времени в 1 минуту попеременно на двух различных турникетах.

Путем подбора значений было установлено, что нулевой и первый байт в первом секторе хранит идентификатор последнего турникета, через который осуществлялся проход. Далее второй и третий байты содержат дату последнего прохода в виде количества дней от 1.1.1992.

Время прохода записано в четвертом байте и старших четырех битах пятого байта, и кратно 30 секундам, начиная с 00:00 часов. Следовательно, расчет времени можно выполнить в два действия:

для расчета часов imageimage

Таким образом получим время 15:30, что соответствует действительному времени прохода.

На основе полученных сведений можно расшифровать данные представленные в предыдущей таблице

Каждая карта Тройка имеет уникальный серийный номер, отличный от UID. Этот номер нанесен на самой карте и используется для удаленного пополнения карты. Он хранится в нулевом блоке восьмого сектора с третьего байта по младшие четыре бита седьмого байта.

Несмотря на то, что все данные хранятся в открытом виде, на их расшифровку было потрачено больше всего времени. При этом некоторые данные остались нерасшифрованными. Предположительно, последние пять байт в первом блоке восьмого сектора содержат криптографическую подпись (т.н. имитовставка, MAC), которая генерируется с использованием приватного ключа в памяти турникета.

Обход блокировки карты


Экспериментально были найдены способы избегать блокировки карты при использовании атаки повторного воспроизведения. Основные факторы срабатывания блокировки:

  • Время последней поездки, записанное в секторе памяти электронного кошелька, не должно повторяться при поездках в метро. То есть перед проходом в метро необходимо выполнить списание на турникете наземного транспорта, таким образом получив актуальную дату последнего прохода после восстановления дампа.
  • Турникеты в наземном транспорте оперативно не синхронизируются с централизованной базой данных, поэтому операции, произведенные с использованием атаки повторного воспроизведения, обнаруживаются очень долго. Поэтому турникеты наземного транспорта могут быть использованы для обновления времени последней поездки перед использованием карты в метро
  • Иногда необходимо выполнять минимальное пополнение карты, например на сумму 1 рубль

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

Ого, круто! пойду попробую

Не стоит. Как мы подчеркнули выше, махинации с транспортными картами — уголовно наказуемое преступление. Скорее всего, за обман транспортной компании хакеру припишут статью о подделке, изготовлении или обороте поддельных документов (статья 327 УК РФ).

С другой стороны, в августе 2021-го троих изготовителей поддельных “Троек” осудили за нанесение имущественного ущерба (статья 165 УК РФ), неправомерный доступ к компьютерной информации (статья 272 УК РФ) и использование вредоносных компьютерных программ (статья 273 УК РФ).

Особенности

  • Быстрый и лёгкий доступ к карте “Тройка”.
  • Возможность оплачивать проезд с телефона.
  • Не рекомендуется оперирование суммами свыше 100 рублей.
  • Нельзя проходить два раза по одному и тому же времени проезда. После записи очередного дампа вам необходимо обновить время на карте с помощью терминалов в наземном транспорте: автобусе или трамвае.

Перехват трафика приложения

Перехват защищенного трафика выполняется методом проксирования SSL-подключений с подменой сертификата сервера. Для этого существуют инструменты, вроде

или

, позволяющие выполнять подмену сертификата и запись расшифрованных данных автоматически. В данном случае, mitmproxy запущен на сервере, к которому по WiFi подключен смартфон с установленным приложением «Мой проездной». В приложении выполнена аутентификация по PIN-коду и произведена проверка баланса на карте Тройка. Все передаваемые в этот момент данные между сервером и приложением были записаны и проанализированы.

Подписание apk

APK-файлы имеют подпись, которая позволяет убедиться, что файл был корректно загружен и выпущен конкретным разработчиком. Без подписи APK-файл установить не получится, но можно использовать самоподписанный сертификат (в этом случае нужно включить опцию “установка из недоверенных источников” в настройках телефона). В результате подписи будет получен APK-файл, готовый для установки на смартфон.

создание сертификата для подписи
imageподписание APK-файла
image

Приложение troikadumper

TroikaDumper

В рамках данного исследования, для удобства эксплуатации атаки повторного воспроизведения было создано приложение TroikaDumper. Оно позволяет локально (без подключения к интернету) просматривать записанные в памяти карты данные, такие как: баланс электронного кошелька, время последнего прохода через турникет, идентификатор последнего турникета, имитовставку, серийный номер карты Тройка, идентификационный номер карты (UID).

Приложение позволяет сохранять состояние памяти и записывать его на карту.


Приложение доступно в исходных текстах

Приложения для смартфонов

В Google Play Market было найдено несколько приложений, позволяющих работать с электронным кошельком карты Тройка. Наиболее популярным по числу установок является приложение «Мой проездной», позволяющее напрямую пополнять карту с помощью смартфона с функцией NFC. Это означает, что приложение содержит данные, позволяющие производить запись в память карты.

Потенциальный вектор атаки: реверс-инжиниринг приложения.____

Из всех рассмотренных целей было решено остановиться на реверс-инжиниринге приложения «Мой проездной», как на более простом и безопасном варианте. Для этого достаточно было приобрести смартфон на платформе Android с поддержкой функции NFC. Выбор данной цели обусловлен еще и тем, что для исследования не требовалось иметь доступ к объектам общественного транспорта, и все операции по поиску уязвимостей можно было произвести не выходя из дома.

Приложение «Мой проездной» предназначено для самостоятельного пополнения карты Тройка. Работает на смартфонах с операционной системой Android и функцией NFC. Приложение бесплатное и доступно для загрузки через Google Play Market (каталог приложений Android).

Сборка модифицированного приложения

Чтобы применить внесенные в исходный код изменения, необходимо скомпилировать APK.

С помощью утилиты apktool можно собрать распакованный APK архив обратно.

сборка APK из исходных текстов
image

Сэкономил или потерял? поддельные карты «тройка» продаются онлайн – аргументы недели

Сэкономил или потерял? Поддельные карты «Тройка» продаются онлайн
Проездная карта “Тройка” подвергается атакам

На сервисах частных объявлений, таких как Юла и Авито, можно встретить десятки «выгодных» предложений купить транспортную карту «Тройка». Стоимость в среднем в два раза ниже, чем в кассах метрополитена. Что это: способ экономить на проезде или мошенничество?

«Тройка» – универсальная карта для проезда на всех видах общественного транспорта Москвы. Появилась она в 2021 году, а в 2020-м ей пользуется 90% пассажиров столичного транспорта. Каждая из таких карт оснащена чипом, в котором хранится информация о балансе и операциях. «Умельцы» взламывают карты, накручивают средства или устанавливают на «Тройку» безлимитный проезд. Информация по взлому карт в свободном доступе гуляет по интернету.

Программист Игорь Шевцов еще в 2021 году написал статью и создал целое приложение «TroykaDumper», которое позволяло пополнять баланс «Тройки», не используя реальные деньги. Для этого пользователю нужен лишь смартфон с функцией NFS. Он назвал свою работу «исследованием», благодаря которому удалось выявить слабые места в защите карты. После этого уязвимость устранили. По решению ишимского суда, статью Игоря запретили и закрыли для просмотра. Приложение тоже не работает. Но подделки не перевелись.

Стоит отметить, что взлом карты – уголовно наказуемое преступление. Это проездной документ. Действия злоумышленников могут квалифицировать по разным статьям. Так в 2021 году трёх хакеров приговорили к условным срокам и штрафам за мошенничество с «Тройками». Их обвинили в причинении имущественного ущерба, неправомерном доступе к компьютерной информации и создании вредоносной программы.

Специалисты отмечают, что мошенничество с транспортными картами не приносит большой прибыли. Руководитель агентства кибербезопасности Евгений Лифшиц в эфире радио Москва FM говорил: «Это редкость, на этом много хакеры не заработают. Это как развлечение для себя. Некая демонстрация своих умений».

Однако такие карты с успехом продаются в интернете. На одно из объявлений о продаже выгодной карты наткнулся Александр Шиляев. Он рассказал «Аргументам недели» о том, как встретился с мошенниками:

«Моя жена потеряла «Тройку» через неделю после того, как приобрела безлимитный проездной на 1 месяц. К сожалению, восстановить карту при утере невозможно. Она не персонифицирована, поэтому, даже зная номер, сделать ничего нельзя. Я вспомнил, что на сервисе «Юла» мне попадались предложения с «Тройками». Мы нашли там продавца, который предлагал карту с проездным на месяц стоимостью 1200 р. При этом такая карта в кассе метрополитена стоит 2170 р. Мы даже не могли подумать, что это может быть обманом. Тем более при покупке её можно сразу проверить на валидаторе. Встретились с продавцом в метро. Молодой человек согласился сам привезти карту в тот же день на конечную станцию. При проверке на экране турникета действительно высветился срок действия. Но через неделю использования карта заблокировалась. Пройти на станцию метро по ней уже не получалось, однако на наземном транспорте карта срабатывала как действительная. Мы написали продавцу о проблеме, он уверил, что карта просто размагнитилась, и заменил её. Вторая карта перестала срабатывать в метро уже через 3 дня. После этого на наши сообщения уже никто не отвечал. Получилось, что мы не сэкономили, а выбросили эти 1200 р. А на следующий день пошли за проездным в кассу метро».

В похожей ситуации оказалась Лейла Хакбердиева. В своём блоге девушка рассказывает, как приобрела взломанную «Тройку», которая перестала срабатывать уже через несколько дней. При этом продавец уверял, что продает карту, потому что переезжает в другой город.

Единственный способ не попасть в лапы мошенников – покупать и пополнять транспортные карты только в официальных точках: кассах и новых автоматах по продаже билетов метрополитена, автоматизированных киосках ГУП «Мосгортранс» и пригородных железнодорожных кассах, отмеченных информационными стикерами.

Проверка на валидаторе при покупке «Тройки» с рук сразу не покажет, что карта нелегитимная. Когда мы проходим через турникет, в систему поступает информация. Программа сверяет, когда и с какого терминала происходило пополнение. У взломанных карт такой информации нет. Через определённое время эти карты фиксируются как подозрительные и блокируются.

Московский метрополитен дал официальный комментарий «Аргументам недели»:

«Воспользовавшись услугами постороннего лица для прохода на станцию, пассажир рискует быть привлеченным к административной ответственности за безбилетный проезд. А приобретая проездной билет с рук, можно попросту потерять собственные деньги, поскольку транспортная карта может оказаться заблокированной уже после нескольких совершенных поездок.

Система контроля обращения билетов метрополитена регулярно выявляет и вносит «в черный список» нелегитимные транспортные карты и проездные билеты. Кроме того, в отношении лиц, занимающихся подделкой проездных билетов возможно уголовное преследование со стороны правоохранительных органов.

Добавьте АН в свои источники, чтобы не пропустить важные события – Яндекс Новости

Телеграм канал td by zoommax – tdbyzoommax

Привет ДАМПлиеры!

Читайте ещё про NFC:  Что такое WMZ кошелек в платежной системе WebMoney: что это за валюта, как открыть счет и где узнать свой номер

Мы очень сильно просим прощения за то, что долго не выходили на связь и затянули с инструкциями.

У нас тут выяснилось, что тов. метрополитеновцы подложили нам говна.

Суть этого говна – изменения в билете на 60 поездок (дада, мы в курсе, что у вас он не записывался).
Метрополитен умудрился внести эти изменения чуть чуть раеьше, чем мы выпустили обнову дампера.

На данный момент мы выяснили в чем проблема, все поправили и все исправления будут доступны в версии 8.2b.

К сожалению все дампы на 60 поездок, которые Вы сделали, сгорели… (“спасибо” ММ🤬).

Обновление до версии 8.2b выложим в ближайшие 10 минут.

Формат данных в секторе электронного кошелька

Чтобы понять структуру хранения данных в памяти карты, была использована чистая карта, купленная в кассе, по которой не было выполнено ни одной поездки. Далее карта была пополнена 10 раз на 1 рубль через автомат. После каждого пополнения состояние памяти сохранялось. В конце все сохраненные данные были сравнены и установлено, что изменения происходят только в двух блоках 8 сектора.

дампы памяти восьмого сектора после пополнений на 1 рубль
image

Видно, что данные изменяются в первом блоке (нумерация от нуля) с 9 по 15 байт. Очевидно, что в данном месте содержится баланс электронного кошелька. Путем подбора возможных форматов хранения данных было выяснено, что значение баланса электронного кошелька хранится в области памяти от младших 4 бит 8 байта до старших 3 бит 10 байта и рассчитывается по формуле

Где 137B8 значение в памяти карты в шестнадцатеричном формате, а 399 сумма в рублях.Таким образом можно рассчитать значения из предыдущей таблицы.

расчет баланса в секторе электронного кошелька
image

Заключение

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

Относительно легко был осуществлен реверс-инжиниринг приложения «Мой проездной», что позволило обойтись без взлома физических систем транспортной инфраструктуры.

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

Итогом исследования стало написание приложения TroikaDumper, позволяющее легко эксплуатировать уязвимости в системе карты Тройка, имея смартфон с поддержкой функции NFC. Приложение просто в использовании и может быть использовано массово.

Для исправления найденных уязвимостей необходимо усовершенствование формата хранения данных в памяти карты и обновление программного обеспечения всех систем, работающих с картой.

Итог анализа api

Из перехваченных сообщений видно, что ключи для чтения карты Тройка загружаются с сервера каждый раз во время чтения карты. Были получены ключи от секторов 2,3,4,6,7,8,15. Найдены сектора памяти, содержащие данные электронного кошелька и информацию о билетах, записанных на карте.

Все эти данные получены за одну операцию считывания баланса. Платежные реквизиты в приложение добавлены не были, никаких платежных операций не производилось. Примечательно, что для операции чтения баланса с сервера загружаются одновременно A и B ключи, хотя ключи B используются для записи данных в память карты. В результате, атакующий может получить возможность записи данных на карту, выполняя только операции чтения.

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

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *

Adblock
detector