Прежде чем перейти к статье, хочу вам представить, экономическую онлайн игру Brave Knights, в которой вы можете играть и зарабатывать. Регистируйтесь, играйте и зарабатывайте!
Когда деревья были чуточку выше, трава зеленее, солнце ярче, а я учился в институте, у меня была социальная карта студента. Она мне нравилась своей функциональностью и продуманностью, но, как и все хорошее, срок действия её закончился и пришлось на неопределенное время забыть об этом благе московской цивилизации. На смену ей пришла Тройка, которая частично смогла вобрать в себя плюсы СКС, но далеко не все…
Все началось с того, что я заболел и обнаружил, что потерял карточку ОМС. Несмотря на то, что номер я помнил наизусть, мне нужно было что-то, что можно приложить к зеленому инфомату в поликлинике, в противном случае, записаться к врачу и получить законный больничный не получится. Вариантов было много: восстановить полис (чтобы потом найти старый при первой же уборке); сгенерировать и распечатать штрих-код полиса (штрих-код на бумажке — несолидно), либо взять с собой свою старую социальную карту… Я остановился на последнем варианте. Если быть точнее, то я решил на нем не останавливаться, а записать на тройку свои полис аналогично тому, как он записан на социальной карте москвича.
Зная возможности Mifare Classic — совместимых карт, я решил объединить Тройку и старую студенческую карту ради удобства и просто из интереса к результату эксперимента.
Как мы знаем, карты Mifare Classic 1K и 4K вывели из оборота из-за уязвимостей в пользу более защищенных, но совместимых Mifare Plus S, Plus X 2k или Plus EV1 2k. Но суть осталась та же: как социальные, так и карты Тройка имеют одну и ту же начинку, с разницей лишь в объеме (количестве защищенных секторов, что в нашем случае абсолютно не играет значения).
Вооружившись статьями про исследования защищенности Тройки и Android приложением «Mifare Classic Tool», я решил заглянуть сначала внутрь социальной карты, чтобы найти место, где записан номер полиса ОМС. Благодаря документу почти двадцатилетней давности я уже предполагал, что он будет в 5-м секторе карты, зарезервированном как медицинское приложение МГФОМС, что и подтвердилось на практике.
Искомый номер полиса оказался в 5м секторе на второй строке со 2го по 9й байт, то есть, в данном случае "7700009016811218". Отлично, зацепка (а, точнее, зацепище есть)!
Что касается карты Тройка, то там 5й сектор забит нулями, то есть, пока не используется. Ключи A и B отличаются от тех, которые на СКС, но это поправимо, их можно переписать такими же, как и там.
Помимо желанного номера полиса ОМС, в секторе присутствовали и другие данные, назначение которых мне неизвестно. Начитавшись статей про 8й сектор (электронный кошелек) и его защищенность имитовставками, я предположил, что здесь эти данные могут играть такую же роль имитовставки или контрольной суммы для проверки целостности данных в секторе. Поэтому я решил проверить это, переписав на одну Тройку весь сектор в точности, как на СКС, а на вторую — только номер полиса. Сказано — сделано!
Снял полный дамп с СКС, и записал на первую Тройку весь 5й сектор, а на вторую — записал отредактированный дамп 5го сектора, где фигурирует только номер полиса.
Прогулявшись до поликлиники и проверив обе карты, я смог с обеих войти на инфоматы и записаться к врачу! Разумеется, в качестве способа аутентификации следует выбрать «Карта москвича» или «Социальная карта москвича» (работают оба способа) и приложить карту к считывателю.
Из этого следует, что инфоматам достаточно лишь номера полиса в отведенном для него месте и знакомых им ключей от пятого сектора.
Теперь можно немало удивить работников поликлиники, продемонстрировав им использование Тройки в качестве полиса ОМС и проходить более удобную и современную бесконтактную аутентификацию, ибо даже современные полисы ОМС не поддерживают бесконтактный обмен информацией — их необходимо вставлять чипом в инфомат. И «Тройка» воистину становится ключом к городу, в частности, к поликлиникам.
Тройка + полис ОМС=? или как все начиналось
Все началось с того, что я заболел и обнаружил, что потерял карточку ОМС. Несмотря на то, что номер я помнил наизусть, мне нужно было что-то, что можно приложить к зеленому инфомату в поликлинике, в противном случае, записаться к врачу и получить законный больничный не получится. Вариантов было много: восстановить полис (чтобы потом найти старый при первой же уборке); сгенерировать и распечатать штрих-код полиса (штрих-код на бумажке — несолидно), либо взять с собой свою старую социальную карту… Я остановился на последнем варианте. Если быть точнее, то я решил на нем не останавливаться, а записать на тройку свои полис аналогично тому, как он записан на социальной карте москвича.
Тюнингуем Тройку
Зная возможности Mifare Classic — совместимых карт, я решил объединить Тройку и старую студенческую карту ради удобства и просто из интереса к результату эксперимента.
Как мы знаем, карты Mifare Classic 1K и 4K вывели из оборота из-за уязвимостей в пользу более защищенных, но совместимых Mifare Plus S, Plus X 2k или Plus EV1 2k. Но суть осталась та же: как социальные, так и карты Тройка имеют одну и ту же начинку, с разницей лишь в объеме (количестве защищенных секторов, что в нашем случае абсолютно не играет значения).
Вооружившись статьями про исследования защищенности Тройки и Android приложением «Mifare Classic Tool», я решил заглянуть сначала внутрь социальной карты, чтобы найти место, где записан номер полиса ОМС. Благодаря документу почти двадцатилетней давности я уже предполагал, что он будет в 5-м секторе карты, зарезервированном как медицинское приложение МГФОМС, что и подтвердилось на практике.
Искомый номер полиса оказался в 5м секторе на второй строке со 2го по 9й байт, то есть, в данном случае "7700009016811218". Отлично, зацепка (а, точнее, зацепище есть)!
Что касается карты Тройка, то там 5й сектор забит нулями, то есть, пока не используется. Ключи A и B отличаются от тех, которые на СКС, но это поправимо, их можно переписать такими же, как и там.
Эксперименты
Помимо желанного номера полиса ОМС, в секторе присутствовали и другие данные, назначение которых мне неизвестно. Начитавшись статей про 8й сектор (электронный кошелек) и его защищенность имитовставками, я предположил, что здесь эти данные могут играть такую же роль имитовставки или контрольной суммы для проверки целостности данных в секторе. Поэтому я решил проверить это, переписав на одну Тройку весь сектор в точности, как на СКС, а на вторую — только номер полиса. Сказано — сделано!
Снял полный дамп с СКС, и записал на первую Тройку весь 5й сектор, а на вторую — записал отредактированный дамп 5го сектора, где фигурирует только номер полиса.
Результаты
Прогулявшись до поликлиники и проверив обе карты, я смог с обеих войти на инфоматы и записаться к врачу! Разумеется, в качестве способа аутентификации следует выбрать «Карта москвича» или «Социальная карта москвича» (работают оба способа) и приложить карту к считывателю.
Из этого следует, что инфоматам достаточно лишь номера полиса в отведенном для него месте и знакомых им ключей от пятого сектора.
Теперь можно немало удивить работников поликлиники, продемонстрировав им использование Тройки в качестве полиса ОМС и проходить более удобную и современную бесконтактную аутентификацию, ибо даже современные полисы ОМС не поддерживают бесконтактный обмен информацией — их необходимо вставлять чипом в инфомат. И «Тройка» воистину становится ключом к городу, в частности, к поликлиникам.