Приложил подорожник к Android Статьи редакции
Петербургский студент научился бесплатно (но незаконно) ездить в транспорте по карте «Подорожник», перезаписывая её через Android-смартфон с NFC.
20-летний студент заочного отделения ЛЭТИ по имени Антон протестировал возможность перезаписи проездных карт «Подорожник», используемых в метро и наземном транспорте Санкт-Петербурга. Как выяснилось, система метро оперативно блокирует модифицированные карты, однако в автобусах и троллейбусах города проверка работает иначе и фактически позволяет ездить бесплатно.
Карты «Подорожник» работают на базе стандарта MIFARE, и для их чтения и записи подойдёт почти любой NFC-ридер, в том числе встроенный в смартфоны на базе Android. Используя описанную в 2015 году методику атаки на подобные карты и внешний NFC-ридер, Антон получил доступ к содержимому её 4 КБ внутренней памяти.
Программист обнаружил, что из 40 секторов памяти данные изменяются только в трёх из них: вероятнее всего, в них записывается информация о балансе карты и о времени последней поездки. В одном из этих секторов находится имитовставка — код, создающийся по определённому алгоритму на основе перезаписываемых данных: если не знать этот алгоритм, задать хранящимся на карте переменным произвольные значения (например, баланс в 1000 рублей) не выйдет.
Поэтому Антон решил идти по другому пути: он пополнял карту, записывал содержимое её памяти, применял её (проходя через турникет или в автомате пополнения), а затем пытался восстановить прежнее содержимое памяти и пробовал воспользоваться «Подорожником» снова. Для удобства он написал собственное приложение для Android и назвал его Plantain («Подорожник»): благодаря ему он мог перезаписывать карты на ходу, прикладывая их к смартфону.
Оказалось, что если вставить перезаписанный «Подорожник» в автомат, он тут же блокируется, и использовать его больше нельзя. Если пройти по нему через турникет метро, карта блокируется примерно через два часа. Однако в наземном транспорте Антон смог воспользоваться перезаписанными картами без ограничений: в течение двух недель тестирования их никто не заблокировал.
В разговоре с TJ студент пояснил, что хотя московская «Тройка» и петербургский «Подорожник» работают схожим образом (их даже планируют объединять), системы их безопасности отличаются.
Система защиты в метро в Петербурге работает гораздо лучше, чем в Москве: она блокирует карту спустя два часа, тогда как в Москве при использовании аналогичных схем «Тройки» могут жить неделями, а у некоторых и месяцами.
С наземным транспортом ситуация хуже: заблокированный в метро «Подорожник» работает в наземке до сих пор, значит, базы там обновляются очень редко или не обновляются вообще.
«Подорожник» имеет гибкую систему тарифов, однако один его параметр неизменен: перед использованием карту нужно приобрести за 60 рублей, но впоследствии её можно вернуть в кассу. Программист считает, что её стоимость на самом деле ниже производственных затрат, и эта мера не защищает от мошенничества.
Стоимость карты обусловлена только тем, что сам носитель с чипом стоит каких-то денег. Если покупать бланк карточки в розницу, цена, возможно, будет даже больше, чем стоимость «Подорожника» в метро.
Более того, «Подорожник» можно вернуть в кассу и получить его стоимость обратно: тогда его даже смогут продать кому-то ещё. Я не стал пробовать вернуть заблокированные карты, не захотел дополнительно рисковать. Но вообще политика блокировок правильная: главная цель — сделать подделку нецелесообразной, и в метро у них всё получается, а вот в наземном есть над чем поработать.
По словам Антона, получить ключ, при помощи которого защищено содержимое карты, очень непросто: он вшит в турникеты и валидаторы, доступ к нему есть только у разработчиков. Если этот ключ утечёт, это будет гораздо более серьёзной проблемой, чем возможность ездить по карте в наземном транспорте.
Антон подчеркнул, что провёл исследование из интереса, а не ради экономии, тем более что подделка проездного преследуется по УК РФ: «Поделиться опытом для меня интереснее, чем пытаться сэкономить на проезде, тем более нарушая закон».
Пока тестировал «Подорожники» в метро, получилось так, что с собой в кармане было три карты, две из которых уже были заблокированы. Начал прикладывать первую — загорелся красный индикатор и появилась надпись «ПБ запрещён». Со второй произошло то же самое.
Тут из будки вышел контролёр и направился в мою сторону: они у себя на пульте видят проходы или возникающие ошибки. Решил избежать диалога и быстро прошёл, используя третью карту. Догонять меня никто не стал, но после этого я пытался вести себя немного аккуратнее.
Обновлено: Спустя почти неделю после публикации Антона газета «Фонтанка» рассказала, что власти города знали о возможной уязвимости карты. При этом издание намекнуло, что исследование безопасности «Подорожника» студентом по времени совпало с активной фазой внедрения новой системы контроля за проездом. Самого Антона вызвали на совещание в комитет по транспорту, однако о сути встречи ничего до сих пор не известно.
В комитете по транспорту подтверждают, что о теоретической возможности такого взлома знали, и объясняют использование старого протокола тем, что он универсален: скажем, карты для льготников используются в том числе и в Ленобласти, и если сейчас провести модернизацию шифрования, не факт, что эту карту смогут воспринимать посторонние терминалы.
Надо было приложить подорожник к заблокированной карте, может помогло бы
Попробуй еще.
Комментарий недоступен
Комментарий недоступен
Комментарий недоступен
Ноги вверх, руки на ширину плеч!
Комментарий недоступен
за Антоном уже выехали жигули из КГБ
Из Минска?
из КГБ
Белоруссии
Комментарий недоступен
Комментарий недоступен
А где тег #РусскиеХакеры?
Комментарий недоступен
Посмотрел фамилию - Lempinen, больше на финна похож
Комментарий недоступен
В тексте есть ссылка
Комментарий недоступен
Я вот тройку пополнял через приложение официальное приложение МойПроездной https://habrahabr.ru/article/274259/
Но решил пополнить через моббанк, и после пополнения на станции у желтого терминала карта заблокировалась. Терминал пишет, что нужно отвезти ее куда-то, грусть.
Давно было?
Заблочили?
1 марта.
Комментарий недоступен